在我的ant构建id结束时,它调用等效的命令行调用
mvn install:install-file -Dfile=my.jar -DgroupId=com.company.project -DartifactId=my_project -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true
这样它就会将新构建的jar添加到另一个项目依赖的maven资源库中。
我尝试使用maven-ant-task并将maven-ant-task jar添加到ant build项目中,并将以下代码添加到build.xml中:
<target name ="minstall" depends="jar">
<artifact:pom id="maven_install" file="maven_install.xml" />
<artifact:install file="${out.dir}/my_project.jar">
<pom refid="maven_install"/>
</artifact:install>
</target>
但似乎缺少一些东西,因为它不适合我。首先,我在build.xml(ant构建文件)中输入错误
元素“artifact:pom”的前缀“artifact”未绑定。
我做错了什么。我是蚂蚁的新手?
在一个问题上,相关POM文件的目的是什么?我通常不会在这个项目中有一个POM,因为它是一个蚂蚁构建
答案 0 :(得分:3)
也许maven-ant-task
jar不是已安装,即不在你的CLASSPATH
中。您可以关注this instruction。
答案 1 :(得分:3)
如前所述,您需要确保在ant脚本中定义任务,并且可以理解工件命名空间。
使用POM文件(在本例中)告诉Maven存储库您放入存储库的JAR的依赖关系。 POM还应指定JAR的标识信息(groupId,artifactId,版本号,许可证等)。
严格来说,您不需要外部POM,您可以在build.xml文件中定义信息,如下所示:
<!-- Assuming tasks defined, and 'artifact' namespace exists -->
<artifact:pom id="maven_install" groupId="com.whatever" artifactId="some-jar"
version="1.0" packaging="jar">
<dependency groupId="..." artifactId="..." version="..."/>
<dependency groupId="..." artifactId="..." version="..."/>
<license name="apache" url="http://www.apache.org"/> <!-- can be omitted -->
</artifact:pom>
<target name ="minstall" depends="jar">
<artifact:install file="${out.dir}/my_project.jar" pomRefId="maven_install"/>
</target>
在'minstall'任务中安装JAR时,应该在本地存储库中使用适当的依赖项生成POM。
答案 2 :(得分:1)
该消息表示您在build.xml
中缺少xmlns:artifact属性。有关示例,请查看文档中的installation page。
至于POM文件的目的,它主要是元数据,以便maven可以正确地找出依赖关系。在真正的maven构建中,它还描述了如何构建,测试和打包。但在你的情况下,所有这一切都是由蚂蚁完成的。
答案 3 :(得分:-2)
我认为将这些命令放在Ant的build.xml中是没有意义的。如果您想在maven仓库中安装jar文件,只需使用mvn install
命令。
除此之外,我猜你在项目中混淆了Maven和Ant工具的目的。我建议使用Maven作为主要构建工具。如果确实需要,可以在POM文件中配置Ant目标的调用。就个人而言,我认为这是让Maven调用Ant的最佳解决方案。 Maven目标(例如清理,测试,打包,安装等)使用起来非常简单且功能强大(我想你可以在每个Maven教程中阅读它。)