【问题标题】:Maven parent POM downloadMaven父POM下载
【发布时间】:2017-12-18 08:36:48
【问题描述】:

我是 Maven 新手,所以我想知道为什么 Maven 会实际下载父级。

这是我的示例目录:

├── hazriq-module
│   ├── document-generator
│   |       ├── src folder
│   |       └── pom.xml (document-generator)
│   └── pom.xml (hazriq-module) 
└── pom.xml (hazriq-parent)

我的 hazriq-parent .pom 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

  <groupId>com.hazriq</groupId>
  <artifactId>hazriq-parent</artifactId>
  <version>${hazriq.verion}</version>
  <packaging>pom</packaging>

  <properties>
    <hazriq.verion>1.0.0</hazriq.verion>
  </properties>

    <modules>
        <module>hazriq-module</module>
    </modules>
</project>

我的 hazriq-module .pom 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.hazriq</groupId>
        <artifactId>hazriq-parent</artifactId>
        <version>1.0.0</version>
    <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>hazriq-module</artifactId>
    <name>hazriq-module</name>
    <packaging>pom</packaging>
  <version>${hazriq.verion}</version>

    <modules>
        <module>document-generator</module>
    </modules>
</project>

我的文档生成器 .pom 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.hazriq</groupId>
        <artifactId>hazriq-module</artifactId>
        <version>1.0.0</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <groupId>com.hazriq.hazriq-module</groupId>
    <artifactId>document-generator</artifactId>

    <dependencies>
        ...
    </dependencies>

当我尝试运行mvn install:

$ mvn install
[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR]   The project com.hazriq:hazriq-module:${hazriq.verion} (C:\development\hzrqmvn\hazriq-module\pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: Failure to find com.hazriq:hazriq-parent:pom: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 3, column 10 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

我的问题是: 1. Maven为什么会去尝试下载hazriq-parent?来自repo.maven.apache.org? (参考上面我mvn clean install的输出。 2. 如何成功构建我的项目?

【问题讨论】:

    标签: maven pom.xml parent


    【解决方案1】:

    为什么不呢?如果你构建一个模块,它的所有父模块都必须递归解析。所有依赖项也是如此。

    这意味着这些工件必须位于已配置的远程存储库(默认情况下为 Maven Central)或您的本地存储库中。您可以通过 mvn install 将其添加到本地存储库。

    【讨论】:

    • 这是一个新的 repo,所以我的远程 repo 上还没有任何人工制品。我确实尝试过mvn install,但你可以看到我收到了上面问题中提到的错误。
    • @HazriqIshak 你必须先在父母身上做一个mvn install
    • 是的。我做了,但它给我一个错误。它在问题中。
    【解决方案2】:

    我失败的原因是&lt;version&gt; 中的占位符。

    我将我的父级 .pom 更改为:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.hazriq</groupId>
      <artifactId>hazriq-parent</artifactId>
      <version>1.0.0</version>
      <packaging>pom</packaging>
    
        <modules>
            <module>hazriq-module</module>
        </modules>
    </project>
    

    我的模块.pom:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.hazriq</groupId>
            <artifactId>hazriq-parent</artifactId>
            <version>1.0.0</version>
        <relativePath>../pom.xml</relativePath>
        </parent>
    
        <artifactId>hazriq-module</artifactId>
        <name>hazriq-module</name>
        <packaging>pom</packaging>
      <version>1.0.0</version>
    
        <modules>
            <module>document-generator</module>
        </modules>
    </project>
    

    我的文档生成器 .pom:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <groupId>com.hazriq</groupId>
            <artifactId>hazriq-module</artifactId>
            <version>1.0.0</version>
        </parent>
    
        <groupId>com.hazriq.hazriq-module</groupId>
        <artifactId>document-generator</artifactId>
    
    
    </project>
    

    关于这个问题的好读物:https://jeanchristophegay.com/maven-unique-version-multi-modules-build-en/

    【讨论】:

      猜你喜欢
      • 2014-11-12
      • 1970-01-01
      • 2010-12-31
      • 2012-04-04
      • 2021-10-15
      • 2015-01-31
      • 1970-01-01
      • 2019-07-24
      • 2013-02-23
      相关资源
      最近更新 更多