3

我有一个带有关联 EAR 项目的基本 Web 应用程序(eclipse 中的动态 Web 项目)。我试图确保我的 junit 测试代码不在部署 EAR 文件中。

在我的网络项目中,我有一个名为“src”的源文件夹和一个名为“test”的源文件夹。当我使用 eclipse 导出它时,我需要将 .class 文件从 EAR 的“测试”源文件夹中保留出来。

我知道这使用 ant 很简单,但使用 eclipse 似乎是不可能的。右键单击项目并导出 ear 文件。始终包含测试类。

如果我手动编辑 .setting/org.eclipse.wst.common.component.xml 文件以删除与测试文件夹关联的标签,它可以工作,但如果其他一些开发人员更改了与构建路径相关的任何内容,它会重新生成......

我是否遗漏了一些明显的东西..我疯狂地用谷歌搜索无济于事..检查了eclipse的文档并且不知所措..

4

2 回答 2

1

这似乎不是直接可能的,这很奇怪。您可以尝试以下几种解决方法。

注意我会将 java 文件从 web 项目移动到 Java 项目(无论如何这可能是一个很好的做法)。无论哪种方式,创建另一个“测试”Java 项目并将测试源移动到该项目。您的测试项目将“主”Java 项目声明为依赖项,因此它可以访问用于测试的类型,但不包含在战争中,因此不会部署测试类。

或者,如果您想将源代码保留在一个项目中,您可以将测试项目配置为使用链接资源。我发布了另一个答案,展示了如何使用链接资源跨项目共享源位置。使用这种方法,测试源仍然不在主项目的构建路径上,因此不会捆绑在 jar 中,而是物理位于项目中,因此源代码控制更简单。

于 2009-07-25T16:13:25.363 回答
1

我正在做类似的事情,除了 PDE,使用 Eclipse 3.7。我正在部署 Eclipse/OSGi 插件/捆绑包,并且有两个 java 源目录:src 和 test

我调整了两个 Eclipse 项目文件的内容,以将测试代码与构建分开。

.classpath

<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry export="false" kind="src" path="test"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry export="false" kind="lib" path="/thirdparty/junit/junit.jar"/>
    <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

这些变化的动机是阅读本文

我不知道这是否适用于您的情况,但我还必须修改build.properties文件,以从生成的 jar 文件中排除编译“测试”的结果。

source.optimizing.jar = src/
#This doesn't contain test/ because we don't want it in the build.

bin.includes = META-INF/,\
               optimizing.jar
#The junit.jar is also exluded               

当我构建整个项目时,测试文件完全没有。

于 2012-01-16T16:11:49.487 回答