从Maven运行Ant任务
我使用Ant来构建自定义jar库,然后在Maven中将它用作依赖项。
<dependency>
    <groupId>test-lib</groupId>
    <artifactId>test-lib</artifactId>
    <version>1.0.0system</scope>
    <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/test-lib-1.0.0.jar</systemPath>
</dependency>
所以,基本上我现在所做的是:
  1)运行ant来构建自定义库(test-lib-1.0.0.jar) 
  2)运行:mvn编译,使用自定义库等编译我的项目。 
有没有一个选项可以让我从Maven完成所有这些(打包自定义jar和编译项目)? 我找到了Maven运行插件,这里是我的设置:
<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.4
    <executions>
        <execution>
            <phase>?????what to put here?????/phase>
            <configuration>
                <tasks>
                    <ant antfile="${basedir}/build.xml">
                        <target name="prepare-test-lib" />
                    </ant>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>
  但是,运行时: mvn compile它抱怨丢失工件: test-lib-1.0.0.jar 。  我在<phase/>标记中使用了compile,generate-resouces ...,但似乎没有任何效果。 
有没有可能用这个插件来解决这个问题?
当使用Maven Antrun Plugin时,Maven会尝试解决依赖关系为AntRun调用构建ClassPath,因此您面临鸡与蛋问题:您无法声明将在AntRun执行期间创建的依赖项,该依赖项需要此依赖项运行。 这是行不通的。
  我的建议是将你的test-lib ,将其包含在你的项目构建中,并声明对它的定期依赖。  换句话说,我的意思是从Ant转到Maven来构建你的test-lib并建立一个多模块项目。  为了更“视觉化”地说明事情,就像这样: 
my-project
|-- my-module
|   |-- src
|   |   `-- main
|   |       `-- java
|   `-- pom.xml
|-- test-lib
|   |-- src
|   |   `-- main
|   |       `-- java
|   `-- pom.xml
`-- pom.xml
  其中my-project/pom.xml是一个包含<packaging>pom</packaging>的聚合pom,并在<modules>元素下面列出模块: 
<modules>
  <module>my-module</module>
  <module>test-lib</module>
</modules>
  my-module/pom.xml声明了对test-lib工件的依赖: 
<dependency>
  <groupId>your.group.id</groupId>
  <artifactId>test-lib</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>
我只是在这里给出一个非常高级的概述,你需要详细阅读文档,我不能涵盖所有内容。 从Sonatype的第一本书开始(下面的链接)。
  但是这将是正确的方法(并且你不应该使用system范围的依赖关系)。 
