java如何打包
打包Java项目的常见方法
Java项目通常使用构建工具进行打包,以下是几种主流方式:
使用Maven打包
在项目根目录的pom.xml文件中配置打包类型后执行:
mvn package
默认生成jar包在target/目录下。如需生成可执行jar,需在pom.xml中添加:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.example.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
使用Gradle打包
在build.gradle中配置后执行:
gradle build
生成结果位于build/libs/。配置可执行jar需添加:
jar {
manifest {
attributes 'Main-Class': 'com.example.MainClass'
}
}
手动打包普通JAR
编译后使用jar命令:
javac -d ./classes src/*.java
jar cvf MyApp.jar -C classes .
生成可执行JAR
创建包含Main-Class的MANIFEST.MF文件后打包:
jar cvmf MANIFEST.MF MyApp.jar -C classes .
MANIFEST.MF内容示例:
Main-Class: com.example.MainClass
打包包含依赖的Fat JAR
Maven可使用maven-assembly-plugin:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.example.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Gradle可使用shadow插件:
plugins {
id 'com.github.johnrengelman.shadow' version '7.1.2'
}
shadowJar {
manifest {
attributes 'Main-Class': 'com.example.MainClass'
}
}
生成WAR包(Web应用)
Maven项目中设置<packaging>war</packaging>后执行mvn package。Gradle应用war插件后执行gradle war。







