mvn无法从远程存储库解析父pom

时间:2017-10-27 13:25:48

标签: java maven

我有一个看起来像

的大项目
 main_pom
 |
 |_ module_1 \
 |_ module_2 -|--- parent_pom_1
 |_ module_3 /  
 |
 |_module_4 \
 |_module_5 -|--- parent_pom_2
 |_module_6 /

所以当我第一次参加项目的时候,我也是由parent_pom_1和parent_pom_2提供的,我用手"单独安装了#34;。 我已经创建了一个apache archiva maven存储库,我在其中部署了我的工件和parent_poms。

Main_pom看起来像:

  <modelVersion>4.0.0</modelVersion>
  <groupId>some_group</groupId>
  <artifactId>main_pom</artifactId>
  <packaging>pom</packaging>

  <dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>group_id_of_parent_pom_1</groupId>
      <artifactId>parent_pom_1</artifactId>
      <version>LATEST</version>
    </dependency>
    <dependency>
      <groupId>group_id_of_parent_pom_2</groupId>
      <artifactId>parent_pom_2</artifactId>
      <version>LATEST</version>
    </dependency>

  </dependencies>
    </dependencyManagement>
  <modules>
    <module>modules/module_1</module>
    <module>modules/module_2</module>
    <module>modules/module_3</module>
    <module>modules/module_4</module>
    <module>modules/module_5</module>
    <module>modules/module_6</module>

  </modules>

  <distributionManagement>
    <repository>
      <id>my_repo_id</id>
      <name>my_repo_name</name>
      <url>my_repo_url</url>
    </repository>
    <snapshotRepository>
      <id>my_repo_id</id>
      <name>my_repo_name</name>
      <url>my_repo_url</url>
    </snapshotRepository>
  </distributionManagement>
</project>

当我去main_pom文件夹并执行

  

mvn install

有下一个错误:

[ERROR]  The build could not read 20 projects -> [Help 1] [ERROR] The project module_1-pom:10.0.1-SNAPSHOT has 1 error [ERROR]     Non-resolvable parent POM for module_1-pom::10.0.1-SNAPSHOT: Could not find artifact parent_pom_1:pom:10.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 4, column 11 -> [Help 2]

据我所知 - maven首先没有下载并安装parent_poms。

我如何配置maven以这种方式工作?

1 个答案:

答案 0 :(得分:0)

这个项目有几个问题。首先,结构不是一个好主意。最好采取以下措施:

main_pom
 +- pom.xml
 |
 +-- parent-pom_1 (parent: main_pom)
      +-- pom.xml
      |_ module_1
      |_ module_2
      |_ module_3
 +-- parent-pom_2 (parent:main_pom)
     |_module_4 
     |_module_5 
     |_module_6 

这意味着您不需要手动安装父pom ...您只需使用以下命令即可从root开始:

mvn clean package

无需mvn clean install ...

使用LATEST as version is deprecated and should not be used anymore。并且定义对父母的依赖将无论如何都无济于事。

<dependency>
  <groupId>group_id_of_parent_pom_1</groupId>
  <artifactId>parent_pom_1</artifactId>
  <version>LATEST</version>
</dependency>

除了上述内容,如果您使用SNAPSHOT版本作为父项,则整个构建不可重现..