【问题标题】:Ant build script to create EAR with multiple WARsAnt 构建脚本以创建具有多个 WAR 的 EAR
【发布时间】:2014-03-07 16:00:00
【问题描述】:

我想创建 Ant 构建脚本以从多个 WAR 构建 EAR。我有 3 个不同的 Web 项目(3 个不同的 WAR)。我需要知道应该将构建 EAR 的 build.xml 保存在哪里。 我应该在这 3 个项目的父文件夹中创建一个新的 EAR 项目吗?

【问题讨论】:

    标签: ant build ear


    【解决方案1】:

    您是否考虑过查看Gradle。 Gradle 支持multi-module projects 如果您遵循他们的约定,则构建脚本相当简单。对于这个项目,您将有三个项目(从每个项目)生成一个战争,然后是一个父项目,该项目创建耳朵并拉入战争工件以创建耳朵文件。

    值得一看,但我知道你问过 Ant。

    【讨论】:

      【解决方案2】:

      我的父项目包含 build.xml 和包含各个模块的子文件夹

      1. build.xml
      2. 耳模块/
      3. ejb 模块/
      4. 网络模块/

      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>
      

      【讨论】:

      • 我打算将 Ivy 与 Ant 一起使用。
      • 你的问题是什么?我对你的回应够不够?我没明白。
      • 能否发布父 build.xml
      • 这是我为一个非常小的项目准备的 XML:codepad.org/ODgo37L5 您可以将其用作想法。但我宁愿为每个模块创建 build.xml,然后从父级调用它们。
      • 我为每个模块创建了 build.xml。但我无法管理依赖项。例如:Module3 依赖于 module1 和 module2。当我运行 module3 构建目标时,它会正确构建 module1 和 module2。但是当它编译module3源代码时,module1和module2 jars不在类路径中。我按照以下链接创建了多模块项目exubero.com/ant/dependencies.html
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      相关资源
      最近更新 更多