如何将 Maven parent 和 child 项目设置为单独的项目?

How to setup maven parent and child project as separate projects?

有一个项目 (type=pom),应该用作另一个项目的 parent。

parent

<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>

child

<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>

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

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

[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 中描述的 repo,但会抱怨 maven.central
  2. 本地存储库中没有缓存任何内容 - 在构建之前从那里删除了所有工件。
  3. parent.relativePath 故意不存在,以使 child 项目与 parent 项目位置无关,并让它仅依赖于已部署的工件(parent pom) .

请展示如何编辑 pom 以将 child 和 parent 作为单独的项目并让 child 仅依赖于 parent神器

请注意,<distributionManagement> 仅用于上传。如果您 运行 mvn deploy.

,这就是 Maven 放置工件的地方

因此,如果您希望 Maven 为父 POM 查看您的工件,您需要添加适当的 <repository> 元素,或者——这是首选方式——在 settings.xml.

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