Java:如何创建多模块项目


#Java 工具#


Gradle、Maven 本身支持多模块项目,而 Intellij IDEA 对此集成的很好。

只要在创建项目后,再通过 File->New->Module,添加模块即可。

本文讨论下,不借助 IDE ,如何创建多模块项目。

基于 gradle 的多模块项目

请参考 Gradle:创建含有多模块(即多个子项目)的项目

基于maven的多模块项目

项目结构:

.
├── child1
│   ├── pom.xml
│   ├── src
│       └── main
│           └── java
│               └── demo1
│                   └── Calculate.java
├── child2
│   ├── pom.xml
│   ├── src
│       └── main
│           └── java
│               └── demo2
│                   └── CalculateService.java
├── pom.xml

项目根目录下的 pom.xml 要指定有哪些module:

<?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>

    <groupId>com.example</groupId>
    <artifactId>java-maven-moudle-demo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <!--指定module-->
    <modules>
        <module>child1</module>
        <module>child2</module>
    </modules>

</project>

child1 和 child2 要在 parent 中指定父项目,同时child2 声明对child1 的依赖。因为 CalculateService 类要用到 Calculate 类。

child1 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">
    <parent>
        <groupId>com.example</groupId>
        <artifactId>java-maven-moudle-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>child1</artifactId>

</project>

child2 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">
<parent>
    <groupId>com.example</groupId>
    <artifactId>java-maven-moudle-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>child2</artifactId>

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>child1</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

</project>

child1 模块中的 Calculate 类内容如下:

package demo1;

public class Calculate {

    public static int add(int a, int b) {
        return a+b;
    }

}

child2 模块中的 CalculateService 类内容如下:

package demo2;

import demo1.Calculate;

public class CalculateService {

    public static void main(String[] args) {
        int result = Calculate.add(1, 2);
        System.out.println(result);
    }

}

然后打开 Intellij IDEA ,File -> Open ,选中项目根目录的 pom.xml ,选择Open as project 打开即可。

如此,我们在IDEA中运行child2中的CalculateService,结果如下:

3

值得读

Authoring Multi-Project Builds


( 本文完 )