配置文件 ID='X' 中的存储库暂存尚未开始
Staging of Repository within profile ID='X' is not yet started
尝试在暂存存储库上部署会导致 Maven 端
400 , ReasonPhrase:Bad Request
并且服务器日志包含
Staging of Repository within profile ID='X' is not yet started!
使用 maven-deploy-plugin 或 maven-release-plugin 没有区别。这三个都会导致上面的错误。
我的部署用户具有(管理员)权限可以部署到每个暂存配置文件。
maven-release-plugin:
mvn release:stage -DstagingRepository=nexus::default::http://localhost:8081/nexus/service/local/staging/deploy/maven2
如果您不使用带有 maven-release-plugin 的版本,如 SNAPSHOT 限定符和类似的,nexus-staging-plugin 工作正常。
我错过了什么?
不允许暂存快照版本,您需要使用发布版本。
乍一看,您可能认为这可以通过让 Nexus 重写 pom 文件并重命名工件来完成。但这并没有那么简单,版本号通常嵌入在工件本身中。对于 war/ear 文件之类的组装工件尤其如此,您会在包含的工件内以及工件内的配置文件中找到版本号。即使这些可以被 Nexus 重写,更改版本号也可能会改变工件的行为。在任何情况下,Nexus 都不会更改分阶段的工件,所做的任何更改都可能导致回归。暂存工件(就像部署到 Nexus 的所有工件一样)是不可变的。
因此,您需要在暂存时使用发布版本。
尝试在暂存存储库上部署会导致 Maven 端
400 , ReasonPhrase:Bad Request
并且服务器日志包含
Staging of Repository within profile ID='X' is not yet started!
使用 maven-deploy-plugin 或 maven-release-plugin 没有区别。这三个都会导致上面的错误。
我的部署用户具有(管理员)权限可以部署到每个暂存配置文件。
maven-release-plugin:
mvn release:stage -DstagingRepository=nexus::default::http://localhost:8081/nexus/service/local/staging/deploy/maven2
如果您不使用带有 maven-release-plugin 的版本,如 SNAPSHOT 限定符和类似的,nexus-staging-plugin 工作正常。
我错过了什么?
不允许暂存快照版本,您需要使用发布版本。
乍一看,您可能认为这可以通过让 Nexus 重写 pom 文件并重命名工件来完成。但这并没有那么简单,版本号通常嵌入在工件本身中。对于 war/ear 文件之类的组装工件尤其如此,您会在包含的工件内以及工件内的配置文件中找到版本号。即使这些可以被 Nexus 重写,更改版本号也可能会改变工件的行为。在任何情况下,Nexus 都不会更改分阶段的工件,所做的任何更改都可能导致回归。暂存工件(就像部署到 Nexus 的所有工件一样)是不可变的。
因此,您需要在暂存时使用发布版本。