Maven找不到模块

时间:2013-11-07 22:11:41

标签: java eclipse maven

我的设置很简单。

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>

2 个答案:

答案 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

同样适用于coreweb