我有一个基本的Web应用程序(eclipse中的动态Web项目)和一个关联的EAR项目。我正在尝试确保我的junit测试代码不在部署EAR文件中。
在我的web项目中,我有一个名为“src”的源文件夹和一个名为“test”的文件夹。当我使用eclipse导出它时,我需要保留来自EAR的“test”源文件夹OUT的.class文件。
我知道使用蚂蚁这是微不足道的,但使用eclipse似乎是不可能的..右键单击项目并导出ear文件..测试类总是包含在内。
如果我手动编辑.setting / org.eclipse.wst.common.component.xml文件以删除与测试文件夹关联的标记,但是如果其他开发人员更改了与构建路径相关的任何内容,则会重新生成......
我错过了一些明显的东西......我用谷歌搜索得无济于事..检查了eclipse的文档并且我不知所措..
答案 0 :(得分:1)
似乎没有直接可能,这是奇怪的。以下是您可以尝试的几种解决方法。
注意我会将java文件从Web项目移动到Java项目(无论如何这可能是一个很好的做法)。无论哪种方式创建另一个“测试”Java项目并将测试源移动到该项目。您的测试项目将“主”Java项目声明为依赖项,因此它可以访问测试类型,但不包含在战争中,因此不会部署测试类。
或者,如果要将源保留在一个项目中,可以将测试项目配置为使用链接的资源。我发布了another answer,其中显示了如何使用链接资源跨项目共享源位置。使用这种方法,测试源仍然不在主项目的构建路径上,因此不会捆绑在jar中,而是物理上位于项目中,因此源控制更简单。
答案 1 :(得分: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>
这些变化的动机是阅读this
我不知道这是否适用于您的情况,但我还必须修改 build.properties 文件,以排除从生成的jar文件中编译'test'的结果。
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
当我构建整个项目时,测试文件完全不存在。