我是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 Central)或本地存储库中。您可以通过执行mvn install
将其添加到本地存储库。
我失败的原因是因为<version>
中的占位符。
我将我的父母.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/