我有个简单的设置。
project
|--> pom.xml
|--> util
|--> core
|--> web
我设法正确地配置了所有的东西。我将版本更改为0.0.1-SNAPSHOT
,从项目名称中删除了点(可能Maven很挑剔,不告诉我,猜错了),我将artifactory
的快照策略更改为never
。
我使用Eclipse4.3,并且验证了我使用的是嵌入式maven版本。
我所拥有的是,它确实找到了父程序,并且可以编译util
。但是当我想编译核心项目时,Maven找不到它。它从调试输出中接合,在本地存储库中寻找它。
我需要做什么呢? Maven可以找到它在其他顶级文件中的位置。
这三个项目都是父<modules>
中的pom
部分的一部分,我不需要使用本地引用来查找父pom
。
发布于 2013-11-09 02:55:47
如果我做对了,您的pom文件应该如下所示。
考虑到在Maven工件之间引用的不同含义:
<module>
,父project
的生成将触发子项目的生成。project
引用为子项目的<parent>
是为了让子项目继承父项目的定义。在许多情况下,您需要两个方向。
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>
<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>
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>
project/core/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>
project/web/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>
发布于 2013-11-07 15:00:37
首先,确保你有
<packaging>pom</packaging>
你的根pom.xml
。
如果您不想确保离线,您可以简单地添加-o
,不需要更改存储库设置。
mvn -o compile <-- in the project root
这也是编译模块的首选方法。它们通常不是分开建造的。但是,如果要编译util
,则需要使用
mvn -pl util compile <-- in the project root
core
或web
也是如此。
https://stackoverflow.com/questions/19847735
复制