我的设置很简单。
project
|--> pom.xml
|--> util
|--> core
|--> web
我设法正确配置了一切。我将版本更改为0.0.1-SNAPSHOT
,我从项目名称中删除了点(可能Maven很挑剔而没有告诉我,错误的猜测)我将artifactory
的快照策略更改为never
。< / p>
我使用Eclipse 4.3,并且我验证了我使用的是嵌入式maven版本。
我所拥有的是它找到了父母,我可以编译util
。但是当我想编译核心项目时,Maven无法找到它。它从Debug输出接收,它在本地存储库中查找它。
我需要做什么,Maven可以在其他顶级文件中找到它。
所有三个项目都是父<modules>
中pom
部分的一部分,我不需要使用本地对父pom
的引用来查找它。< / p>
答案 0 :(得分:3)
如果我做对了,你的pom文件应该如下所示。
考虑Maven工件之间引用的不同含义:
<module>
,父project
的构建触发了子项的构建project
的引用,因为子项目的<parent>
允许子项目从父项继承定义在许多情况下,您需要两个方向。
<强>项目/ 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>
<groupId>project</groupId>
<artifactId>project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>util</module>
<module>core</module>
<module>web</module>
</modules>
</project>
<强>项目/ UTIL / 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>project</groupId>
<artifactId>project</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>util</artifactId>
</project>
<强>项目/核心/ 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>project</groupId>
<artifactId>project</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>core</artifactId>
<dependencies>
<dependency>
<groupId>project</groupId>
<artifactId>util</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
<强>项目/网络/ 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>project</groupId>
<artifactId>project</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>web</artifactId>
<dependencies>
<dependency>
<groupId>project</groupId>
<artifactId>util</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
答案 1 :(得分:1)
首先,确保你有
<packaging>pom</packaging>
代表您的根pom.xml
。
如果您不想确定自己处于离线状态,则只需添加-o
,无需更改存储库设置。
mvn -o compile <-- in the project root
这也是编译模块的首选方法。它们通常不是单独构建的。但是,如果要编译util
,则使用
mvn -pl util compile <-- in the project root
同样适用于core
或web
。