Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 如何用Maven包装Ant构建?_Maven 2_Ant - Fatal编程技术网

Maven 2 如何用Maven包装Ant构建?

Maven 2 如何用Maven包装Ant构建?,maven-2,ant,Maven 2,Ant,我们的大型ish产品使用maven。我们的所有工件都使用maven部署目标部署到共享的archiva存储库中。我现在正在集成一个具有ant构建的第三方产品。我知道如何使用antrun插件从maven调用ant目标,但我不确定如何在这个实例中设置pom。我不希望maven实际生成一个工件,但我确实希望它在运行maven部署目标时提取ant构建的工件 我计划让pom与build.xml相邻。pom将使用包目标中的antrun插件在适当的时间调用ant目标来构建.war工件 问题: a) 我正在创建一

我们的大型ish产品使用maven。我们的所有工件都使用maven部署目标部署到共享的archiva存储库中。我现在正在集成一个具有ant构建的第三方产品。我知道如何使用antrun插件从maven调用ant目标,但我不确定如何在这个实例中设置pom。我不希望maven实际生成一个工件,但我确实希望它在运行maven部署目标时提取ant构建的工件

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

问题:

a) 我正在创建一个.war文件,但它是通过ant而不是Maven创建的,因此在pom中使用war打包类型是没有意义的。我的包装类型应该是什么

b) 如何使maven从ant输出目录中提取工件以实现部署目标

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

您可以使用调用ant构建。然后使用将ant生成的jar附加到项目。附加的工件将与pom一起安装/部署。
如果使用packaging
pom
指定项目,Maven将不会与ant构建冲突

在下面的示例中,假定ant build.xml位于src/main/ant中,具有
编译
目标,并输出到
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 antrun插件
过程资源
跑
org.codehaus.mojo
构建助手maven插件
1.3
加罐
包裹
附加工件
${project.build.directory}/ant-output.jar
罐子

正如我在另一个问题中所写的那样,您实际上可以使用Maven包装ANT项目。假设您现有的ant项目具有清理和构建任务,这可能是包装项目的一种有用方法,这样您就可以使用maven目标并将其映射到现有的ant代码。

请参阅:

具体来说,如何从Ant调用Maven目标可以在以下示例中找到:

有了以上信息,你应该能够实现你所需要的。如果您有任何问题,请告诉我。


<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>
org.apache.maven.plugins maven安装插件 2.3.1 安装库 安装 安装文件 x、 x 说出事实 ${project.version} ant-output.jar 拉链
非常有用的答案丰富,一旦我的项目成功,我会接受你的答案。非常好的建议。不幸的是,它不适用于WAR文件-maven WAR插件似乎并不关心附加的WAR工件。对不起,一旦我将包装规格更改为pom,它实际上可以正常工作-附加的WAR不再干扰生成的WAR,因此最终正确添加到回购中。谢谢Sal,回答得好。并没有完全解决我上面的a、b和c,但无论如何都很有用。