从eclipse导出EAR时如何过滤部署的代码?

时间:2009-07-24 14:52:20

标签: eclipse unit-testing export ear

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

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

我知道使用蚂蚁这是微不足道的,但使用eclipse似乎是不可能的..右键单击项目并导出ear文件..测试类总是包含在内。

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

我错过了一些明显的东西......我用谷歌搜索得无济于事..检查了eclipse的文档并且我不知所措..

2 个答案:

答案 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               

当我构建整个项目时,测试文件完全不存在。