Mik*_*per 12 java maven multi-module
我似乎无法让Maven在多模块项目中找到兄弟模块.
我已经mvn clean install在所有模块中运行了.
这是设置:
Product
+-- MagniCompCommon
+-- Model
Run Code Online (Sandbox Code Playgroud)
该Model项目具有MagniCompCommon依赖性.当我跑mvn clean compile进来时Model,我得到:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Model 1.0
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for com.magnicomp:MagniCompCommon:jar:1.0 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.585 s
[INFO] Finished at: 2015-10-14T10:09:04-07:00
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project Model: Could not resolve dependencies for project com.magnicomp:Model:jar:1.0: Failure to find com.magnicomp:MagniCompCommon:jar:1.0 in http://download.java.net/maven/2/ was cached in the local repository, resolution will not be reattempted until the update interval of Java.Net has elapsed or updates are forced -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
如您所见,Maven正试图MagniCompCommon在java.net repo中找到(这是parent(Product)中的第一个存储库条目pom.xml).
这是产品pom.xml:
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.magnicomp</groupId>
<artifactId>Product</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>MagniCompCommon</module>
<module>Model</module>
<module>Common</module>
<module>Agent</module>
<module>Doc</module>
</modules>
... snip ...
<repositories>
<repository>
<id>Java.Net</id>
<url>http://download.java.net/maven/2/</url>
</repository>
Run Code Online (Sandbox Code Playgroud)
这是MagniCompCommon pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.magnicomp</groupId>
<artifactId>Product</artifactId>
<version>1.0</version>
</parent>
<!-- <groupId>com.magnicomp.common</groupId> -->
<artifactId>MagniCompCommon</artifactId>
<packaging>jar</packaging>
Run Code Online (Sandbox Code Playgroud)
这是模型 pom.xml
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.magnicomp</groupId>
<artifactId>Product</artifactId>
<version>1.0</version>
</parent>
<artifactId>Model</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.magnicomp</groupId>
<artifactId>MagniCompCommon</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
Tun*_*aki 20
在构建多模块Maven项目时,需要从根POM运行Maven命令.这意味着你需要运行mvn clean install上Product的pom.xml.
您将获得错误:您只是在构建Model.在ModelPOM中,Maven看到存在依赖关系,MagniCompCommon因此它试图寻找这种依赖关系.首先,它在您的本地仓库中进行搜索:由于您之前未安装MagniCompCommon,因此无法在那里找到它.因此,它在预定义的远程存储库中查找它(并且也找不到它).
你可以通过首先mvn clean install在MagniCompCommonPOM上运行然后在ModelPOM 上来绕过这个,但是通过直接在根POM上调用Maven可以更容易地完成.它将以正确的顺序正确构建每个模块(因为Model依赖于MagniCompCommon它,它将MagniCompCommon首先构建,然后 Model).
作为旁注,您可以删除该行,<packaging>jar</packaging>因为这是默认值.
| 归档时间: |
|
| 查看次数: |
6282 次 |
| 最近记录: |