原创

使用指定插件版本的 mvn deploy 不会执行之前的生命周期阶段

温馨提示:
本文最后更新于 2024年04月12日,已超过 37 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

在我的公司,我们遇到了一个问题,我们想要将一个带有阴影的 fat jar 配置到我们的 jfrog 工件上,而我们刚刚升级到 Java 17,我们的运营团队已将 Jenkins 用于配置 fat jar的命令定义为

mvn jar:jar org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy -DaltReleaseDeploymentRepository=central::https://artifactory.url/artifactory/libs-release -DaltSnapshotDeploymentRepository=snapshots::https://artifactory.url/artifactory/libs-snapshot --settings mvn_settings.xml --global-settings mvn_settings.xml

当.jar部署到我们的工件上时,它只有我们编译的代码,没有任何关于我们期望的依赖项的内容。在使用2.8.1版本之前,我们要求安装3.1.1来看看是否是这个问题。

在我们的本地环境中,我们可以成功将 fat jar 部署到目录中

mvn jar:jar deploy -DaltDeploymentRepository=snapshot-repo::default::file:C:\artifacts

它已经完成了,像预期的那样在预算阶段执行了遮蔽,我们得到了一个胖罐子,但是当我们像詹金斯步骤一样添加插件时

mvn jar:jar org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy -DaltDeploymentRepository=snapshot-repo::default::file:C:\artifacts

事实并非如此,我们只是得到一个 4kb 的 .jar,里面只有 .class

我们的运营团队不想将命令更改为仅在不指定插件的情况下进行部署,因为根据他们的说法,maven 对较旧的 java 版本做了奇怪的事情(对于所有 maven 项目和版本的命令相同) ,简单的解决方案是告诉他们只使用部署,但他们需要充分的理由,所以这就是我在这里问的原因(jar:jar 部分也用于部署做任何事情吗?)

请注意,问题刚刚开始出现在 Java 17 上,如果我们将 Java 17 更改恢复到 Java 8,它可以正常工作,并且我们可以在本地使用相同的命令(带和不带插件版本)替换此问题。

正文到此结束
热门推荐
本文目录