Fat JAR(也称为uber-JAR)是一个包含了其所有依赖项的可执行Java归档文件(JAR),这意味着它不仅仅包含了你自己编写的类和资源文件,还包括了所有你的应用程序运行时所需的第三方库。这样做的好处是简化了部署过程,因为你只需要部署一个文件即可。
要创建一个Fat JAR,你可以使用构建工具如Maven或Gradle,它们都提供了打包所有依赖项到一个JAR中的插件。
以下是一个使用Maven的简单Fat JAR入门案例:
my-fatjar-app
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── App.java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── pom.xml
<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 方法的类。
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 的格式。
java -jar target/my-fatjar-app-1.0-SNAPSHOT-jar-with-dependencies.jar
这应该会在终端输出 “Hello, World!”。
以上就是一个简单的Fat JAR入门案例。如果你使用的是Gradle,步骤将有所不同,但基本概念是相同的:你需要配置你的构建脚本以包含所有依赖,并创建一个可执行的JAR文件。