【发布时间】:2014-03-07 16:00:00
【问题描述】:
我想创建 Ant 构建脚本以从多个 WAR 构建 EAR。我有 3 个不同的 Web 项目(3 个不同的 WAR)。我需要知道应该将构建 EAR 的 build.xml 保存在哪里。 我应该在这 3 个项目的父文件夹中创建一个新的 EAR 项目吗?
【问题讨论】:
我想创建 Ant 构建脚本以从多个 WAR 构建 EAR。我有 3 个不同的 Web 项目(3 个不同的 WAR)。我需要知道应该将构建 EAR 的 build.xml 保存在哪里。 我应该在这 3 个项目的父文件夹中创建一个新的 EAR 项目吗?
【问题讨论】:
您是否考虑过查看Gradle。 Gradle 支持multi-module projects 如果您遵循他们的约定,则构建脚本相当简单。对于这个项目,您将有三个项目(从每个项目)生成一个战争,然后是一个父项目,该项目创建耳朵并拉入战争工件以创建耳朵文件。
值得一看,但我知道你问过 Ant。
【讨论】:
我的父项目包含 build.xml 和包含各个模块的子文件夹
build.xml 为每个模块调用 ant,然后将它们组装在一起以生成 ear。
这是来自具有多个模块的单蚂蚁的示例。我更喜欢在从主文件夹调用的每个模块中都有单独的 ant 文件。依赖关系在 ant 中可能很棘手。这可能是人们更喜欢 maven/graddle 而不是 ant 的原因。
<target name="war" depends="ejb">
<mkdir dir="${build.dir}/war" />
<path id="web-classpath">
<path refid="classpath" />
<file file="${build.dir}/${ant.project.name}.jar" />
</path>
<javac srcdir="web-module/java" classpathref="web-classpath" destdir="${build.dir}/war" debug="true"
source="${compiler.source.level}" target="${compiler.target.level}" encoding="${src.encoding}"/>
<war destfile="${build.dir}/${ant.project.name}.war" webxml="web-module/war/WEB-INF/web.xml">
<webinf dir="web-module/war/WEB-INF">
<exclude name="web.xml"/>
<exclude name="classes/**"/>
<exclude name="lib/**"/>
</webinf>
<classes dir="${build.dir}/war" />
<lib dir="web-module/war/WEB-INF/lib"/>
<fileset dir="web-module/war">
<exclude name="WEB-INF/*"/>
<exclude name="META-INF/*"/>
</fileset>
</war>
</target>
【讨论】: