Maven继承与分发管理

Maven Inheritance and Distribution Management

我有一些开发人员在我的组织外部使用 Maven parent。对于这种特殊情况,parent 是 spring-boot-starter-parent

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

他们的构建正在运行,他们已经针对这些依赖项进行了很长时间的测试,理想情况下我不想更改他们的继承。

作为发布工程师,我遇到的问题是生成的工件需要存储在内部 Maven 存储库中。过去,我们通过使用 Maven Parent 来实现这一点,该 Maven Parent 定义了所有项目都将其作为其继承链的根。

我最终可能会管理数百个 POMS,但我不想把每个 POMS 都放进去,就好像我们必须移动内部 Maven 存储库一样,我将不得不管理大量的项目来反映变化。

有什么方法可以设置我基本上没有 parents 的写入权限?这可以在 MAVEN_OPTS 中设置或作为 CI 服务器上的属性文件吗?我尝试使用 properties-maven-plugin 输入我们所有的属性,但 distributionManagement 不接受 属性 作为变量。

保留您的组织父 pom(除了您之前指定的 parent 元素)需要您将 Spring Boot 依赖项作为 bom:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>1.4.1.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

但我认为侵入性较小的方法可能是使用以下方法为您的模块设置正确的版本:

mvn versions:set 在构建工件并部署到 Nexus(或其他 Maven 存储库管理器)之前