2

我有一个 jenkins 构建管道,其中第一个作业调用 mvn clean package 来编译和构建我的 java 项目。该工件随后被复制到一堆测试作业中,以确保我的构建质量。链中的最后一个作业应该将工件部署到我的 nexus 存储库。

我现在的问题是,当我只有带有 maven 的最终 jar myproject-1.2.0-SNAPSHOT.jar 时,如何将文件部署到 nexus?

我试过了

mvn deploy:deploy-file

但是这个插件需要获取有关 groupId、artifact id、版本等的信息。我不想在我的部署作业中知道这些信息。jar中的信息不是存储在某些maven文件中吗?我只想说nexus,这里有神器,拿去吧。

4

3 回答 3

2

使用 Maven 构建的 jar 在META-INF/maven/目录中包含此信息。有完整pom.xml的文件在下找到META-INF/maven/[groupId]/[artifactId]/pom.xml

所以你可以做的是编写一个小程序来提取这些信息并mvn deploy:deploy-file使用正确的参数进行调用。

不幸的是,您必须知道groupIdandartifactId才能获取文件,因此您无法轻松打开和解析它。但当然,您可以获得(唯一)目录META-INF/maven的名称以及该目录的(唯一)子目录的名称。这有点麻烦,但它应该可以工作。

注意:还有一个pom.properties包含最重要信息的文件,它可能比pom.xml.

于 2012-10-25T11:09:22.707 回答
0

在我看来,这一切都倒退了。我会将周围的流程更改为

  1. 运行 mvn clean deploy以将库部署到存储库管理器(Nexus 左右)或本地存储库(如果您有多个构建节点,则不太理想)
  2. 让测试作业从存储库中获取工件作为依赖项(或脚本 wget 或其他)
  3. 你已经完成了..
于 2012-10-25T20:06:41.800 回答
-1

使用您用来生成 jar 文件的 pom.xml 文件。将该文件保留为工件的一部分,当您需要手动部署时,您可以使用它

于 2012-10-25T11:38:19.787 回答