使用Maven ant任务将jar安装到本地存储库

时间:2011-01-11 10:43:37

标签: maven-2 ant jar maven maven-ant-tasks

在我的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,因为它是一个蚂蚁构建

4 个答案:

答案 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教程中阅读它。)