用Maven构建 Fat JAR

本文介绍了如何使用Maven将Java项目构建为一个包含所有依赖的Fat JAR,适用于微服务和Docker容器部署。主要步骤包括在POM文件中配置maven-assembly-plugin,指定`jar-with-dependencies`描述符,以及执行`package`阶段来生成Fat JAR。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Maven可以将你的Java项目构建成一个Fat JAR。 Fat JAR是一个单个JAR文件,其中包含项目中所有已编译的Java类以及项目所依赖的所有JAR文件。

当你需要构建可执行的JAR文件时,Fat JAR会很方便。如:微服务。你可以将你的微服务及其所有依赖项打包到一个JAR文件中。这使执行变得更加容易,因为你不必在类路径中列出微服务所依赖的所有JAR文件,这简化了启动微服务的命令。

如果你需要将应用程序打包在Docker容器中,Fat JAR也很方便。无需将应用程序依赖的每个JAR文件添加到Docker容器,只需添加应用程序的Fat JAR,并且使Dockerfile与应用程序使用的外部依赖项(JAR文件)无关。

 

1.Fat JAR POM配置

为了使用Maven从项目中构建Fat JAR,必须在项目的POM文件中包含Fat JAR构建配置。

通过将maven-assembly-plugin包含在POM文件的plugin部分中,可以配置Maven从项目中构建Fat JAR。

<build>
    <finalName>my-project-name</finalName>
    <plugins>

        <!-- other Maven plugins ... -->

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.1.1</version>

            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>

            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>

        </plugin>
    </plugins>
</build>

 

configuration XML元素内的maven-assembly-plugin包含一个descriptorRef,它告诉Maven应构建哪种类型的程序集。 jar-with-dependencies值告诉Maven构建具有依赖关系的JAR文件,这其实是Fat JAR的另一个术语。

executions XML元素告诉Maven该Maven插件应在哪个阶段和目标期间执行。 这个maven-assembly-plugin指定在打包阶段执行。

 

2.使用Maven命令来构建Fat JAR

构建Fat JAR的Maven命令:

mvn clean package

 

当使用前面显示的maven-assembly-plugin配置执行Maven package阶段时,Maven将在target目录中输出Fat JAR,Maven将其所有其他构建(例如,编译的类,生成的JavaDocs等)都输出到该目录中。 Fat JAR的命名如下:

my-project-name-jar-with-dependencies.jar

 

上述Fat JAR文件名中my-project-name是示例中的build XML元素中最上面finalName XML元素的值。

其它选择参考文档: http://maven.apache.org/plugins/maven-assembly-plugin/

 

3.完整POM文件Fat JAR配置

这是Fat JAR配置的完整Maven POM文件:

<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.jenkov.myprojectname</groupId>
    <artifactId>my-project-name</artifactId>
    <version>1.1.0</version>
    <packaging>jar</packaging>

    <name>My Project Name</name>

    <dependencies>
    
        <!-- Dependencies used by project -->

    </dependencies>

    <build>
        <finalName>my-project-name</finalName>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.1</version>

                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>

                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
    
            </plugin>
        </plugins>
    </build>
</project>    


原文地址: https://www.zhblog.net/go/java/tutorial/maven-build-fat-jar?t=633

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值