Maven 2 如何使用artifact:writepom和artifact:pom?
我一直在尝试使用writepom作为参考,但一直存在问题。我基本上只是想测试它是否真的能工作,这样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="
<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您应该将其作为顶级问题发布,并展示您已经完成的工作。