如何使用工件:writepom和artifact:pom?

时间:2010-07-27 14:27:56

标签: maven-2 ant pom.xml

我一直在尝试使用这个http://maven.apache.org/ant-tasks/examples/write-pom.html作为参考使用writepom并且遇到了问题。我本质上只是试图测试它是否真的有效,所以POM文件非常简单。见下文。

<project name="CreatePOMStructure" basedir="./test" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
 <description>
  Test Script
 </description>

 <path id="maven-ant-tasks.classpath" path="/usr/local/apache-ant-1.8.1/lib/maven-ant-tasks-2.1.1.jar" />
 <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
            uri="antlib:org.apache.maven.artifact.ant"
            classpathref="maven-ant-tasks.classpath" />

 <artifact:pom id="maven-pom" groupId="com.cgi.wealth" artifactId="maven-pom-setup" version="1.0" name="maven-setup">
  <license name="apache" url="http://www.apache.org"/>
     <dependency groupId="junit" artifactId="junit" version="4.1" scope="test"/>
     <dependency groupId="org.codehaus.plexus" artifactId="plexus-utils" version="1.5.5"/>
 </artifact:pom>

 <artifact:writepom pomRefId="mypom1" file="mypom1.xml"/>

</project>

当我尝试运行ant

时出现此错误
  

[错误]无法执行目标   org.apache.maven.plugins:行家-antrun-插件:1.0:运行   (编译)项目maven-setup:   执行ant任务时出错:   发生以下错误   执行此行:   /maven-setup/scripts/build.xml:11:   java.lang.NoSuchMethodError:   org.apache.maven.settings.RuntimeInfo(Lorg /阿帕奇/行家/设置/设置):V    - &GT; [帮助1]

我不确定它是否相关,但在我添加typedef之前我遇到了这个错误:

  

[错误]无法执行目标   org.apache.maven.plugins:行家-antrun-插件:1.0:运行   (编译)项目maven-setup:   执行ant任务时出错:   发生以下错误   执行这个   行:/maven-setup/scripts/build.xml:9:   无法创建任务或类型类型:   的antlib:org.apache.maven.artifact.ant:POM

     

Ant无法找到任务或类   这项任务依赖于。

对不起最基本的问题,但我似乎无法解决这个问题。

[编辑]

这是我用来运行ant build的pom.xml文件。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.cgi.wealth</groupId>
  <artifactId>maven-setup</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>

                <version>1.0</version>
                <executions>
                    <execution>
                        <id>compile</id>
                        <phase>generate-sources</phase>
                        <configuration>            
                            <tasks>
                                <ant antfile="${basedir}/scripts/build.xml" />
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-ant-tasks</artifactId>
            <version>2.1.1</version>
        </dependency>
    </dependencies>    
</project>

项目问题仅在运行maven任务“mvn generate-sources”时存在(参见上面的pom.xml)。当我运行“ant”时,它就会成功构建。非常感谢任何见解。

1 个答案:

答案 0 :(得分:2)

只要您将maven-ant-tasks-2.1.1.jar放入build.xml所在的同一目录中,此脚本就可以正常运行。
您遇到的错误告诉我路径可能不正确。

此外,最好不要设置项目的basedir属性并使用默认(build.xml的当前目录)

最后但并非最不重要的是,artifact:writepom pomRefId应与id的{​​{1}}匹配。

以下是剧本:

artifact:pom