【问题标题】:How to setup maven parent and child project as separate projects?如何将maven父项目和子项目设置为单独的项目?
【发布时间】:2020-10-23 02:21:24
【问题描述】:

有一个项目(type=pom),它应该被用作另一个项目的父级。

父母

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>my-firm</groupId>
  <artifactId>custom-parent</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>

  <distributionManagement>
    <repository>
      <id>lib-repo-local</id>
      <name>my-releases</name>
      <url>http://artifactory.local:8081/artifactory/libs-release-local</url>
    </repository>
    <snapshotRepository>
      <id>lib-repo-snapshots</id>
      <name>my-snapshots</name>
      <url>http://artifactory.local:8081/artifactory/libs-snapshot-local</url>
    </snapshotRepository>
  </distributionManagement>

</project>

孩子

<project>
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>my-firm</groupId>
    <artifactId>custom-parent</artifactId>
    <version>1.0.0</version>
  </parent>

  <artifactId>child-sample</artifactId>
  <version>0.0.1</version>
  <packaging>jar</packaging>
    
  <distributionManagement>
    <repository>
      <id>lib-repo-local</id>
      <name>my-releases</name>
      <url>http://artifactory.local:8081/artifactory/libs-release-local</url>
    </repository>
    <snapshotRepository>
      <id>lib-repo-snapshots</id>
      <name>my-snapshots</name>
      <url>http://artifactory.local:8081/artifactory/libs-snapshot-local</url>
    </snapshotRepository>
  </distributionManagement>

</project>

父项目部署到远程存储库 - 工件my-firm:custom-parent:1.0.0 可用。

当我在子项目上运行mvn clean 时出现错误

[FATAL] Non-resolvable parent POM for my-firm:child-sample:0.0.1: 
        Failure to find my-firm:custom-parent:1.0.0 in https://repo.maven.apache.org/maven2
        was cached in the local repository, resolution will not be reattempted until
        the update interval of central has elapsed or updates are forced
        and 'parent.relativePath' points at wrong local POM @ line 7, column 11

错误信息中的所有三点似乎都与我的意图无关。

  1. Maven 不会尝试查看distributionManagement 中描述的存储库,而是对 maven.central 的投诉
  2. 本地存储库中没有缓存任何内容 - 在构建之前从那里删除的所有工件。
  3. 故意缺少parent.relativePath,以使子项目与父项目位置无关,并让它仅依赖于已部署的工件(父 pom)。

请展示如何编辑poms 以将子项和父项作为单独的项目,并让子项仅依赖于父项。

【问题讨论】:

    标签: java maven parent-child pom.xml parent-pom


    【解决方案1】:

    请注意&lt;distributionManagement&gt; 仅用于上传。如果您运行 mvn deploy,这就是 Maven 放置工件的地方。

    因此,如果您希望 Maven 为父 POM 查看您的工件,您需要添加适当的 &lt;repository&gt; 元素,或者 - 这是首选方式 - 在 settings.xml 中配置您的工件。

    尽管如此,如果您首先在某台机器上构建父代,然后在同一台机器上构建子代,则父 POM 将从本地存储库中读取。它不会以任何方式从那里移除。我不知道你的情况出了什么问题,但我猜你要么有两个构建的不同本地存储库,要么内容在两者之间以某种方式被删除。

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 2019-12-22
      • 1970-01-01
      • 2018-10-02
      • 2021-06-09
      • 2019-01-03
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多