Fat JAR(也称为uber-JAR)是一个包含了其所有依赖项的可执行Java归档文件(JAR),这意味着它不仅仅包含了你自己编写的类和资源文件,还包括了所有你的应用程序运行时所需的第三方库。这样做的好处是简化了部署过程,因为你只需要部署一个文件即可。
要创建一个Fat JAR,你可以使用构建工具如Maven或Gradle,它们都提供了打包所有依赖项到一个JAR中的插件。
以下是一个使用Maven的简单Fat JAR入门案例:
- 创建一个新的Maven项目你可以手动创建一个新的Maven项目,或者使用IDE来生成,项目结构通常如下所示:
my-fatjar-app
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── App.java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── pom.xml
- 编辑 pom.xml 文件在 pom.xml 文件中,你需要添加 maven-assembly-plugin 插件配置,它会指导Maven如何打包你的应用程序和它的依赖项到一个Fat JAR中。
<project>
<!-- 省略其他配置 -->
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
在这个配置中,<mainClass>标签指定了应用程序的入口点,即包含 main 方法的类。
- 编写你的应用程序代码在 src/main/java/com/example/App.java 文件中,写下你的应用程序入口点:
package com.example;
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello, World!" );
}
}
- 构建你的应用程序在命令行中,导航到你的项目目录并运行以下命令来构建你的应用程序:
mvn clean compile assembly:single
这会执行清理、编译和打包的步骤,生成的Fat JAR将会放在 target 目录下,文件名通常遵循 [artifactId]-[version]-jar-with-dependencies.jar 的格式。
- 运行你的Fat JAR你可以使用以下命令运行生成的Fat JAR:
java -jar target/my-fatjar-app-1.0-SNAPSHOT-jar-with-dependencies.jar
这应该会在终端输出 “Hello, World!”。
以上就是一个简单的Fat JAR入门案例。如果你使用的是Gradle,步骤将有所不同,但基本概念是相同的:你需要配置你的构建脚本以包含所有依赖,并创建一个可执行的JAR文件。