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 如何使用artifact:writepom和artifact:pom?_Maven 2_Ant_Pom.xml - Fatal编程技术网

Maven 2 如何使用artifact:writepom和artifact:pom?

Maven 2 如何使用artifact:writepom和artifact:pom?,maven-2,ant,pom.xml,Maven 2,Ant,Pom.xml,我一直在尝试使用writepom作为参考,但一直存在问题。我基本上只是想测试它是否真的能工作,这样POM文件就相当简单了。见下文 <project name="CreatePOMStructure" basedir="./test" xmlns:artifact="antlib:org.apache.maven.artifact.ant"> <description> Test Script </description> <path id="

我一直在尝试使用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时遇到此错误

[错误]无法执行目标 插件:maven antrun插件:1.0:run (编译)在project maven设置中: 执行ant任务时出错:错误 在运行时发生以下错误: 执行这一行: /maven setup/scripts/build.xml:11: java.lang.NoSuchMethodError: org.apache.maven.settings.RuntimeInfo.(Lorg/apache/maven/settings/settings;)V ->[帮助1]

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

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

Ant找不到任务或类 这项任务依赖于

很抱歉,我有一个最基本的问题,但我自己似乎无法解决这个问题

[编辑]

下面是我用来运行ant构建的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>

4.0.0
com.cgi.wealth
maven设置
0.0.1-快照
罐子
org.apache.maven.plugins
maven antrun插件
1
编译
生成源
跑
org.apache.maven
maven蚂蚁任务
2.1.1

只有在运行maven任务“mvn generate sources”(参见上面的pom.xml)时,项目的问题才存在。当我刚刚运行“ant”时,它会成功构建。如果您将
maven-ant-tasks-2.1.1.jar
放入您的
build.xml
所在的目录中,则此脚本运行良好。
您遇到的错误告诉我路径可能不正确

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

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

以下是脚本:

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


不幸的是,当我尝试按照您的建议进行更改时,仍然会出现相同的错误。如果我将jar文件移动到build.xml文件所在的目录中(并像您那样在脚本中更改它的路径),我会遇到第一个错误,即无法创建任务。还有其他想法吗?很抱歉造成混淆,我使用maven运行脚本(请参阅原始问题中的pom.xml),但现在直接运行ant就可以了。您对我如何使用maven pom.xml实现这一点有什么想法吗?我已将pom.xml添加到我的原始问题中。无论如何,我们非常感谢您的帮助:)@mdangelo。阅读这篇关于在antrun插件->中引用类路径的文章。在您的例子中,我认为
typedef
中的类路径应该是
${org.apache.maven:maven ant tasks:jar}
我们如何在子pom的内部witepom任务中提到父pom?@BalajiBoggaramRamanarayan您应该将其作为顶级问题发布,并展示您已经完成的工作。