当我只获得最终的.jar时,如何使用maven部署工件?

时间:2012-10-25 10:59:05

标签: java maven deployment nexus

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

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

我试过

mvn deploy:deploy-file

但是这个插件需要获取有关groupId,工件ID,版本等的信息。我不想在我的deploy-job中知道这些信息。 不是信息存储在jar本身的某些maven文件中吗? 我只想说nexus,这是一个神器,接受它。

3 个答案:

答案 0 :(得分:2)

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

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

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

注意: 还有一个包含最重要信息的pom.properties文件,可能比pom.xml更容易解析。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这似乎都对我不利。我会改变流程

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