Maven继承和分发管理

Maven继承和分发管理,maven,inheritance,parent-pom,Maven,Inheritance,Parent Pom,我的开发人员在组织外部使用Maven家长。对于这种特殊情况,父级是SpringBootStarter父级 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> &

我的开发人员在组织外部使用Maven家长。对于这种特殊情况,父级是SpringBootStarter父级

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

org.springframework.boot
spring启动程序父级
1.4.1.1发布
他们的构建工作正常,并且他们已经针对这些依赖项进行了很长时间的测试,理想情况下,我不想更改他们的继承

作为一名发布工程师,我遇到的问题是,生成的工件需要存储在内部Maven存储库中。历史上,我们是通过一个Maven父级来实现这一点的,该父级定义了所有项目作为其继承链的根,而不是其他任何东西

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


有没有什么方法可以设置我基本上没有对家长的写访问权限?这可以在MAVEN_OPTS中设置,还是作为CI服务器上的属性文件设置?我已经尝试使用属性maven plugin来输入我们的所有属性,但是distributionManagement不接受属性作为变量。

保持您的组织父pom(您之前指定的
父元素除外)需要您将
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>

org.springframework.boot
spring启动依赖项
1.4.1.1发布
聚甲醛
进口
但我认为不那么麻烦的方法可能是使用以下方法为您的模块设置正确的版本:


mvn版本:在构建工件并部署到Nexus(或其他Maven repo管理器)之前设置

我真的不明白您想要实现什么。您构建的工件应该进入工件存储库,如Nexus或Artifactory。通常,构建服务器会将它们部署到该存储库中。您还可以代理Nexus/Artifactory中的外部存储库,以便在其中拥有所有使用过的父pom的副本。开发团队通常使用父pom,它本质上定义了我们的超级pom版本。在本例中,开发团队使用的是SpringBootStarter父级,而不是“我们的”父级,因此没有继承与其他构建相同的内容。执行Maven release:perform无法部署,因为找不到发布存储库(因为没有deploymentManagement集)。我希望能够允许开发人员使用组织外部(即非所有)的父级,并且仍然能够在pom导入成功后将它们发布到我们的内部repo。我现在能够提取所有的spring引导依赖项,并使用一个公司POM来详细说明Artifactory在哪里。这并不是只拉入依赖项的插件,但对于我的场景来说,这是可以接受的。