从其他模块导入

时间:2016-04-28 13:56:44

标签: java maven

我使用JavaMaven编写项目。在项目中我有很多模块。我的问题是我无法从其他模块导入类。

我的项目结构如下:

Project
 |_ module1
    |_ src
       |_ com.xyz.project.md1
          |_ Person.java
    |_ pom.xml <- pom of module1
 |_ module2
    |_ src
       |_ com.xyz.project.md2
          |_ Robot.java
    |_ pom.xml <- pom of module2
 |_ pom.xml <- main Project pom

module1module2在我的项目中Modules,已在pom.xml注册 - 主要项目pom

当我从Person.java开始module1时,我想从Robot.java导入module2,但我无法使用import com.xyz.project.md2.Robot执行此操作。 为什么?

3 个答案:

答案 0 :(得分:20)

在module1 / pom.xml中声明对module2的依赖,如下所示:

<dependencies>
    ...
            <dependency>
                <groupId>XX</groupId>
                <artifactId>module2</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
    ...
</dependencies>

答案 1 :(得分:2)

你必须在module1的项目中添加module2的项目作为依赖项(maven依赖项)。 多模块并不意味着所有模块都自动相互依赖

处理多模块项目的Maven机制执行以下操作:

Collects all the available modules to build
Sorts the projects into the correct build order
Builds the selected projects in order 

希望这会有所帮助。

答案 2 :(得分:0)

在模块2的build.gradle中:

dependencies {
    compile(project(":module1")) {
        transitive = false
    }
     ...
     //Other dependencies
     ...
}

transitive = false确保不导入依赖项的依赖项。仅导入您的源零件

-尽管问题使用Maven,但我们大多数人使用Gradle。