Java 学习笔记

所有文章
📖 最新文章 transmittable-thread-local 库 JOOR 反射库 Lombok 库:为你减少样板代码 Slf4j 日志组件的使用 加速maven、gradle依赖下载
📖 Java 基础 安装 第一个程序 使用 UTF-8 编写代码 空值 null 正则表达式 线程 日期/时间 匿名类 枚举 ThreadLocal 线程本地变量 动态代理 jar 命令

Java: 如何创建多模块项目


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

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

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

基于 gradle 的多模块项目

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

基于maven的多模块项目

示例代码地址: https://github.com/letiantian/demo/tree/master/java-maven-moudle-demo

项目结构:

.
├── 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


( 本文完 )

文章目录