【问题标题】:How do I call Ant Builts using Maven如何使用 Maven 调用 Ant Build
【发布时间】:2012-04-26 19:01:58
【问题描述】:

我有许多使用 ANT 运行的 php 项目子模块 [它只是复制文件并运行 SQL]。

现在我需要实现 Maven 来处理未来的单元测试 + [Maven 是我们将来需要使用的最佳工具。]

我已经在 Eclipse 中安装了 Maven for php。我在 IDE 中使用 Maven 创建了一个新项目。我也可以运行项目。 [我是 Maven 的菜鸟,但对 ANTs 很满意]

现在我想使用 Maven 项目调用那些子模块 ANT 的 xml。 有 ANT RUN 可以为 Maven 解决问题,但我无法:

  • 弄清楚如何在 Maven 项目之外引用模块的 ANT xml
  • Ant 仅仅链接 XML 就可以完成这项工作吗?还是我需要更多依赖项?

【问题讨论】:

    标签: php maven ant


    【解决方案1】:

    使用 Maven ant runner plugin 调用 ANT 逻辑,使用 ANT 的 subant 任务

    示例

    $ tree
    .
    |-- pom.xml
    `-- src
        `-- main
            `-- ant
                |-- module1
                |   `-- build.xml
                `-- module2
                    `-- build.xml
    
    5 directories, 3 files
    

    pom.xml

    <project>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.myspotontheweb.demo</groupId>
        <artifactId>demo</artifactId>
        <version>1.0-SNAPSHOT</version>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.7</version>
                    <executions>
                        <execution>
                            <phase>compile</phase>
                            <configuration>
                                <target>
                                    <property name="src.dir" location="${project.build.directory}/../src"/>
                                    <subant>
                                        <fileset dir="${src.dir}" includes="**/build.xml"/>
                                    </subant>
                                </target>
                            </configuration>
                            <goals>
                                <goal>run</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>
    

    ANT 被配置为在 Maven 构建的“编译”阶段运行。 ANT 逻辑使用subant 任务来运行外部ANT 逻辑。

    运行示例

    $ mvn compile
    ..    
    ..
    [INFO] --- maven-antrun-plugin:1.7:run (default) @ demo ---
    [INFO] Executing tasks
    
    main:
    
    main:
         [echo] module1: hello world
    
    main:
         [echo] module2: hello world
    [INFO] Executed tasks
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1.394s
    [INFO] Finished at: Fri Apr 27 20:25:35 IST 2012
    [INFO] Final Memory: 4M/15M
    [INFO] ------------------------------------------------------------------------
    

    【讨论】:

    • 好的,它具有最大的魅力......谢谢。你能帮我理解includes="**/build.xml"**的含义吗?我犯了一个错误,只使用了*。它没有用。
    • **/build.xml 将通过子目录向下递归。欲了解更多信息,我推荐 ANT doco:ant.apache.org/manual/Types/fileset.html
    【解决方案2】:

    您可以在 Maven 的 Ant Run 插件的 target 配置元素中简单地使用 ant 任务。

    【讨论】:

    • 谢谢,但我正在寻找外部模块化目标。
    • 什么是“外部模块化目标”?
    猜你喜欢
    • 2014-11-12
    • 2012-11-24
    • 2014-08-30
    • 2011-09-17
    • 2010-10-16
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多