当前位置: 首页 > 知识库问答 >
问题:

当我只得到最后的.jar时,如何用maven部署工件?

和弘博
2023-03-14

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

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

我试过了

mvn deploy:deploy-file

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

共有1个答案

施赞
2023-03-14

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

因此,您可以做的是编写一个小程序,提取这些信息,并使用正确的参数调用mvn deploy:deploy-file

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

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

 类似资料:
  • 我的名为“TestProject”的Java/Maven项目与我的jenkins and nexus repo挂钩: 我的pom.xml看起来是: 正如预期的那样,jenkins将工件上传到Nexus,看看jenkins build的控制台输出,如下所示: 问题是: 如果我在pom.xml中指定的版本是

  • 问题内容: 我的java / maven项目“ testproject”与我的jenkins和nexus回购挂钩: 我的pom.xml看起来像: 在我的詹金斯设置中,我有: 正如预期的那样,jenkins将工件上传到Nexus。查看jenkins build的控制台输出,如下所示: 问题是 : 鉴于我在pom.xml中指定的版本是 jenkins为何将testproject- 0.1-201205

  • 更新:见后续问题 我有一个Java库,它的构建过程完全是用蚂蚁编写的。项目的沙盒(我编辑代码的源代码目录)是 它的构建(输出)目录是 这就是我的目标: > 它们被放置在 这部分已经完成,效果很好。这三个罐子是Maven Central所需的(向上滚动一点即可查看)。 将版本签入GitHub并将构建目录上载到我的web服务器。我也完成了这一步。 :唯一需要做的就是签署三个JAR并将其推送到Maven

  • 当我的插件(portlet、钩子或主题)在Liferay中可用时,我想尽快运行一些代码。 在,,或。

  • 因此,我在gitlab上有一个项目test-project(https://gitlab.com/group/test-project),这是一个我使用gitlab管道构建和部署的java应用程序。在构建阶段,我正在执行,包test-project.jar被推送到gitlab maven存储库(https://gitlab.com/group/test-project/-/packages)。 现

  • 在运行时是否可以获得my war的maven deploy插件在运行时生成的完整工件版本/内部版本号? 如果maven进程生成并打包了一个包含值的属性文件,就可以了。 请记住,我的项目为每个部署生成唯一的(有时间戳的)工件版本。