4

我有一个包含多个项目的平面项目结构。我将 Nexus 用于内部存储库,将 SVN 用于源代码管理。我能够部署SNAPSHOT我的项目的构建。

在我的父 pom 中,我添加了 maven 发布插件:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.1</version>
</plugin>

和分布信息:

<distributionManagement>
  <repository>
    <id>releases</id>
    <url>http://localhost:8081/nexus/content/repositories/releases</url>
  </repository>
  <snapshotRepository>
    <id>snapshots</id>
    <name>Internal Snapshots</name>
    <url>http://localhost:8081/nexus/content/repositories/snapshots</url>
  </snapshotRepository>
</distributionManagement>

当我在做 a 时mvn release:prepare,带有发布版本的工件没有被部署到 repo。因此,如果我有一个项目 A 依赖于项目 B。项目 A 无法通过发布版本获得 B 的工件。

4

1 回答 1

11

release:prepare 默认调用“clean”和“verify”目标,它们只是尝试编译和运行测试。因此,没有任何内容部署到您的远程存储库,也没有安装在您的本地存储库中。要使用新发布版本处理多模块项目中的依赖关系,您需要在发布期间将内容安装在本地存储库中:prepare,因此使用prepareGoals 属性将默认目标更改为“clean”和“install”。

<plugin>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.1</version>
    <configuration>
       <preparationGoals>clean install</preparationGoals>
    </configuration>
</plugin>

您可以添加在构建过程中需要的任何目标。

到远程存储库的实际部署将由 release:perform 目标完成。

洛朗

于 2011-03-29T12:45:49.120 回答