0

我正在尝试在 GitLab CI 管道中使用语义发布。我的准备阶段工作正常,但是当我使用除 之外的任何东西时,发布阶段总是失败mvn jar:jar deploy:deploy,但是当我使用这些命令时,它会部署一个3kb 大的 jar 而不是 10mb 的 jar。所以我只能假设它没有收集依赖项。有WARNING一条关于没有文件被标记为包含并且 jar 为空的消息。所以我尝试在调用deploy之前打包项目。那没起效。

管道无故失败。它只是表明那条线是罪魁祸首。

我尝试过的命令:

mvn clean install
mvn clean package deploy
mvn jar:jar deploy:deploy
mvn clean deploy:deploy
.. you get the idea. 

这是有效的准备部分:

verifyConditions:
  - "@semantic-release/changelog"
  - "@semantic-release/gitlab"
  - "@semantic-release/git"
verifyRelease:
  - path: "@semantic-release/exec"
    cmd: echo -e "VERSION=${nextRelease.version}\nNEW_RELEASE=true" > RELEASE.env
prepare:
  - path: "@semantic-release/exec"
    cmd: if [ ! -d ".m2" ]; then mkdir .m2; cd .m2; touch settings.xml; echo $MVN_SETTINGS | base64 -d > 'settings.xml'; cd ..; fi;  mvn versions:set -DnewVersion=${nextRelease.version} -B -gs .m2/settings.xml;
  - "@semantic-release/changelog"

这是仅适用于 jar:jar deploy:deploy 但不创建正确 jar 的发布部分。

publish:
  - "@semantic-release/gitlab"
  - path: "@semantic-release/exec"
    cmd: if [ ! -d ".m2" ]; then mkdir .m2; cd .m2; touch settings.xml; echo $MVN_SETTINGS | base64 -d > 'settings.xml'; cd ..; fi; mvn versions:set -DnewVersion=${nextRelease.version} -DremoveSnapshot=true clean deploy -B -gs .m2/settings.xml;

我对此非常陌生,我不明白为什么:

1)尝试clean deploy导致此失败并且jar:jar deploy:deploy不会 2)我如何获得语义发布来创建一个包含所有依赖项的 jar 以上传到我们的存储库。

我应该注意到 Maven Shade 插件和 Maven Deploy 插件都存在于我的 pom.xml 中。

这是一个较旧的运行,但它们都是这样格式化的,并没有告诉你为什么它失败了。只是它做到了:

  stderr: '/bin/sh: line 1:   425 Killed                  mvn clean deploy -B -gs .m2/settings.xml\n',
  failed: true,
  signal: null,
  cmd: '/bin/sh -c mvn $MAVEN_CLI_OPTS versions:set -DremoveSnapshot; mvn clean deploy -B -gs .m2/settings.xml',
  timedOut: false,
  killed: false,
  pluginName: '@semantic-release/exec' }ERROR: Job failed: command terminated with exit code 1
4

1 回答 1

1

首先,对于部署使用mvn clean deploy。您提出的其他组合不会产生合理的输出。

如果你想将依赖打包到你的jar中,你需要正确配置Maven shade插件(通常不需要配置deploy插件)。没有你的pom.xml,我只能猜测,但我会说错误可能在那个配置中。

顺便说一句:如果 jar 打算独立运行,则仅将依赖项放入 jar 中。另一方面,如果您编写一个 Java 库用作依赖项,请不要这样做。

于 2019-12-16T19:02:38.177 回答