36

我有 maven 项目,我想将我的工件部署在内部 nexus 存储库上,该存储库被配置为在两个不同的地方拥有我的快照发布。所以我不能使用'distributionManagement',因为这会硬编码位置。所以我定义了几个在我的settings.xml 中说“releaseRepository”和“snapshotRepository”,每个都有参数“release”,对于发布应该设置为“true”,对于快照应该设置为“false”。

我正在使用以下命令运行我的构建以发布我的工件;

mvn clean deploy -DaltDeploymentRepository=releaseRepository::<DON'T KNOW WHAT GOES HERE SO LEFT IT EMPTY>::htp://abc.com/repositores/my-releases/ -Drelease=true

现在,当我在命令上方运行时,它会失败,因为未提供“布局”的值,并且出现异常并且构建失败。

我找不到任何关于“布局”价值应该是什么的信息,我有大约 10 个项目,我想一个接一个地构建和发布。

4

3 回答 3

55

altDeploymentRepository String - 指定项目工件应部署到的替代存储库(除了 中指定的那些<distributionManagement>)。格式:id::layout::url

——(来源

因此,在您的情况下:(releaseRepository::default::http://your.repo.url请参阅此处了解布局)。

于 2012-11-25T01:31:19.633 回答
1

“布局”是为向后兼容 Maven 1 而提供的遗留开关,在这一点上是不合时宜的。如果您使用的是 Maven 2 或 Maven 3(我相信至少 99.99% 的世界必须在这一点上),它确实是“默认”的,如此处其他地方所述。通过声明答案是明确的“默认”,可以避免开关的实用性问题;如果它总是“默认”,它仍然存在吗?

如果您实际上仍在使用 Maven 1,它应该是“遗留的”,但我希望没有人是。所有这些都在 Maven 规范中进行了描述:

布局 Maven2 布局的默认布局或 Maven1 布局的传统布局。Maven3 也使用默认布局。

https://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html

于 2015-11-21T08:36:33.333 回答
0

这可能不是您特定问题的答案,但仅仅因为您有不同的发布和快照存储库,您不需要使用 alt location 属性。仍然可以通过 pom.xml 中的分发管理标签进行管理

这是具有发布和快照存储库的示例片段

  <distributionManagement>
    <repository>
      <id>releaseRepository</id>
      <name>releaseRepository</name>
      <url>release-url-goes-here</url>
    </repository>
    <snapshotRepository>
      <id>snapshotRepository</id>
      <name>snapshotRepository</name>
      <url>snapshot-url-goes-here</url>
    </snapshotRepository>
  </distributionManagement>
于 2021-08-10T09:34:17.963 回答