如何用Maven包装Ant构建?

我们为我们的大型产品使用maven。 我们所有的工件都使用maven部署目标部署到共享的archiva存储库。 我现在正在整合一个有蚂蚁构建的第三方产品。 我知道如何使用antrun插件从maven调用ant目标,但我不知道如何在这种情况下设置pom。 我不希望Maven实际生成一个工件,但我确实希望它能够在Maven部署目标运行时取出由Ant构建的工件。

我打算让pom与build.xml相邻。 pom将使用包目标中的antrun插件在适当的时间调用ant目标来构建.war工件。

问题:

a)我正在创建一个.war文件,但它是通过ant创建的,而不是Maven,所以在pom中有一个战争包装类型是没有意义的。 我的包装类型应该是什么?

b)如何让maven从我的ant输出目录中取出工件以实现部署目标?

c)如果对A和B没有好的答案,那么是否有ant任务复制maven部署功能以将我的.war工件存入共享存储库?


你可以使用maven-antrun-plugin来调用ant构建。 然后使用build-helper-maven-plugin将ant生成的jar附加到项目中。 附带的工件将与pom一起安装/部署。
如果您使用包装pom指定项目,Maven将不会与ant构建发生冲突。

在下面的例子中,假设ant build.xml位于src / main / ant中,有一个compile目标,并输出到ant-output.jar

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <phase>process-resources</phase>
      <configuration>
        <tasks>
          <ant antfile="src/main/ant/build.xml" target="compile"/>
        </tasks>
      </configuration>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>1.3</version>
  <executions>
    <execution>
      <id>add-jar</id>
      <phase>package</phase>
      <goals>
        <goal>attach-artifact</goal>
      </goals>
      <configuration>
        <artifacts>
          <artifact>
            <file>${project.build.directory}/ant-output.jar</file>
            <type>jar</type>
          </artifact>
        </artifacts>
      </configuration>
    </execution>
  </executions>
</plugin>

实际上,您可以使用多个蚂蚁运行目标来为Maven包装一个ANT项目,就像我在另一个问题中写的一样。 假设你现有的ant项目有干净的构建任务,这可能是一个包装项目的有用方式,所以你可以使用maven目标并将其映射到现有的ant代码。


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
        <execution>
            <id>install-library</id>
            <phase>install</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>x.x</groupId>
                <artifactId>ant-out-atifacts</artifactId>
                <version>${project.version}</version>
                <file>ant-output.jar</file>
                <packaging>zip</packaging>
            </configuration>
        </execution>
    </executions>
</plugin>
链接地址: http://www.djcxy.com/p/44315.html

上一篇: How to wrap an Ant build with Maven?

下一篇: How to Toggle First Responders Between Text Fields and Views