6

在我的 ant build 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.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,因为它是 ant build

4

4 回答 4

3

也许maven-ant-taskjar 没有安装,即不在你的 antCLASSPATH中。您可以按照此说明进行操作。

于 2011-01-11T11:11:58.800 回答
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。

于 2011-02-03T09:20:06.060 回答
1

该消息意味着您的 .xml 文件中缺少 xmlns:artifact 属性build.xml。查看文档中的安装页面以获取示例。

至于 POM 文件的用途,它主要是元数据,以便 maven 可以正确地找出依赖关系。在真正的 Maven 构建中,它还描述了如何构建、测试和打包。但是在您的情况下,所有这些都是由 ant 完成的。

于 2011-01-11T20:40:08.093 回答
-2

我认为将这样的命令放在 Ant 的 build.xml 中是没有意义的。如果你想在你的 Maven 仓库中安装你的 jar 文件,只需使用mvn install命令。

除此之外,我猜您在某种程度上混淆了项目中 Maven 和 Ant 工具的用途。我的建议是使用 Maven 作为您的主要构建工具。如果你真的需要,你可以在你的 POM 文件中配置 Ant 目标的调用。就个人而言,我认为让 Maven 调用 Ant 是最好的解决方案。Maven 目标(例如清理、测试、打包、安装等)非常简单易用且功能强大(我想您可以在每个 Maven 教程中阅读它)。

于 2011-01-11T10:51:06.860 回答