Java多模块项目依赖打包示例

在Java开发中,我们经常会使用多个模块来构建一个复杂的应用程序。在这种情况下,我们可能会遇到模块之间的依赖关系问题。一个常见的需求是将依赖的包打入Java包中以简化部署和依赖管理。本文将介绍如何使用Maven实现这一目标。

创建多模块项目

我们首先创建一个多模块的Maven项目,其中包含两个模块:apputilapp模块依赖util模块。我们的目标是将util模块依赖的包打入app模块中。

创建util模块

首先,我们创建util模块,并在其中编写一个简单的工具类StringUtil

package com.example.util;

public class StringUtil {
    public static String reverse(String str) {
        return new StringBuilder(str).reverse().toString();
    }
}

创建app模块

然后,我们创建app模块,并在其中使用util模块提供的StringUtil类:

package com.example.app;

import com.example.util.StringUtil;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        String reversedStr = StringUtil.reverse(str);
        System.out.println(reversedStr);
    }
}

配置依赖打包

接下来,我们需要在app模块的pom.xml文件中配置依赖打包。我们可以使用Maven Assembly插件来实现这一目标:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>com.example.app.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

构建项目

最后,我们可以使用Maven构建项目。在app模块的根目录下执行以下命令:

mvn clean package

构建完成后,在target目录下会生成一个包含所有依赖的app-1.0-jar-with-dependencies.jar文件。

总结

通过将依赖的包打入Java包中,我们可以简化部署和依赖管理,使项目更易于维护和分发。上面是一个简单的示例,实际项目中可能会涉及更复杂的依赖关系和打包配置。希望本文能帮助你解决类似的问题,提高开发效率和代码质量。


gantt
    title 甘特图示例
    dateFormat  YYYY-MM-DD
    section 项目规划
    项目启动    :done,    des1, 2022-01-01, 30d
    需求分析    :active,  des2, after des1, 30d
    设计开发    :         des3, after des2, 30d
    测试部署    :         des4, after des3, 30d
journey
    title 旅行图示例
    section 准备阶段
    买机票      : 2022-01-01, 2022-01-05
    订酒店      : 2022-01-06, 2022-01-10
    打包行李    : 2022-01-11, 2022-01-15
    section 旅行阶段
    乘飞机      : 2022-01-16, 2022-01-17
    入住酒店    : 2022-01-18, 2022-01-20
    游览景点    : 2022-01-21, 2022-01-25