从使用蚂蚁的战争中排除一个级别

时间:2013-03-27 22:17:31

标签: java eclipse ant

我有一个使用RMI的Web应用程序,因此它包含RMI接口类,但不包括其实现。为了避免在两个地方重复接口定义,我试图将RMI服务器代码保存在Web应用程序的Eclipse项目中;但是必须从war文件中排除RMI服务器类,因为它具有main()方法。 build.xml中的jar任务和.spec用于为RMI服务器守护程序生成RPM。

我尝试在war任务中使用excludes子句,然后在类中使用

    <war webxml="${web.dir}/WEB-INF/web.xml" destfile="${dist.dir}/${ant.project.name}.war">
    <classes dir="${build}" excludes="**/RMIServer.class" />
        <fileset dir="${web.dir}" />
        <manifest>
            <attribute name="Built-Date" value="${TODAY}" />
            <attribute name="Built-By" value="${user.name}" />
        </manifest>
    </war>

然后在文件集中:

    <war webxml="${web.dir}/WEB-INF/web.xml" destfile="${dist.dir}/${ant.project.name}.war">
        <classes dir="${build}" />
        <fileset dir="${web.dir}" >
            <exclude name="**/RMIServer*.class"/>
        </fileset>
        <manifest>
            <attribute name="Built-Date" value="${TODAY}" />
            <attribute name="Built-By" value="${user.name}" />
        </manifest>
    </war>

但是我无法让它工作 - 服务器类仍处于war / WEB-INF / classes / ...

我怎样才能做到这一点?或者,单个项目的目标是不明智的吗?

2 个答案:

答案 0 :(得分:0)

你的最后一句话回应了我的想法。如果我有一个Web服务器和一个RMI服务器,我会将它们放入单独的项目中,即使一个调用另一个项目。我可能会使用Maven或类似的东西来帮助我。

现在我会非常惊讶地找到一个项目,将两个不同的服务器进程实现放入一个Eclipse / IDEA / Maven / Ivy /其他项目中。

答案 1 :(得分:0)

<classes> 您的文件集。对于类文件,您不需要同时使用<classes><fileset>。我认为发生的事情是当你将它从一个中排除时,它会被另一个包括在内。