1

I've been trying to use writepom using this http://maven.apache.org/ant-tasks/examples/write-pom.html as a reference and have been having problems. I'm essentially just trying to test whether it will actually work so the POM file is quite bare. See below.

<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>

I get this error when I try to run ant

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.0:run (compile) on project maven-setup: Error executing ant tasks: The following error occurred while executing this line: /maven-setup/scripts/build.xml:11: java.lang.NoSuchMethodError: org.apache.maven.settings.RuntimeInfo.(Lorg/apache/maven/settings/Settings;)V -> [Help 1]

I'm not sure if it's relevant, but before I added the typedef I was getting this error:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.0:run (compile) on project maven-setup: Error executing ant tasks: The following error occurred while executing this line:/maven-setup/scripts/build.xml:9: Could not create task or type of type: antlib:org.apache.maven.artifact.ant:pom.

Ant could not find the task or a class this task relies upon.

Sorry for the most likely basic question, but I can't seem to fix this myself.

[EDIT]

Here's the pom.xml file which I use to run the ant build.

    <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>

The problem with the project only exists when running the maven task "mvn generate-sources" (see pom.xml above). When I just run "ant" it builds successfully. Any insight is greatly appreciated.

4

1 回答 1

2

该脚本运行良好,前提是您已将其放入maven-ant-tasks-2.1.1.jar您所在的同一目录中build.xml
您遇到的错误告诉我路径可能不正确。

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

最后但并非最不重要artifact:writepom pomRefId的一点是,应该匹配idof artifact:pom

下面是脚本:

<project
  name="CreatePOMStructure"
  default="default"
  xmlns:artifact="antlib:org.apache.maven.artifact.ant"
>
   <path id="maven-ant-tasks.classpath" path="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"
   />

   <target name="default">
     <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="maven-pom" file="mypom1.xml"/>
   </target>

</project>
于 2010-07-27T15:23:48.717 回答