如何打包java程序
打包Java程序的基本方法
Java程序可以通过多种方式打包,常见的包括JAR、WAR和EAR文件。以下是详细的打包步骤:
使用JAR文件打包
JAR(Java Archive)是最常见的打包方式,适用于独立应用程序或库。通过JDK自带的jar工具或Maven/Gradle构建工具可以生成JAR文件。
手动打包命令:
jar cvf MyProgram.jar *.class
使用Maven打包需在pom.xml中配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
</plugin>
</plugins>
</build>
运行mvn package生成JAR文件。
生成可执行JAR
需要在MANIFEST.MF中指定主类:
Main-Class: com.example.Main
使用Maven配置可执行JAR:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
使用WAR文件打包Web应用
WAR(Web Application Archive)用于Web应用程序。通过Maven的war插件可以打包:
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
</plugins>
</build>
运行mvn package生成WAR文件。
使用Docker容器打包
将Java应用容器化是现代化部署方式。创建Dockerfile:
FROM openjdk:11-jre-slim
COPY target/myapp.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
构建并运行容器:
docker build -t myapp .
docker run -p 8080:8080 myapp
使用JPackage打包原生安装包(Java 14+)
JPackage工具可以将JAR打包为平台特定的安装包:
jpackage --input target/ --name MyApp --main-jar myapp.jar --main-class com.example.Main
使用ProGuard混淆和优化
在打包过程中可以使用ProGuard减小体积并混淆代码:
java -jar proguard.jar @config.pro
配置文件示例:

-injars input.jar
-outjars output.jar
-libraryjars /usr/lib/jvm/java-11-openjdk/lib/rt.jar
-keep public class com.example.Main {
public static void main(java.lang.String[]);
}






