阅读量:4
Ubuntu下Java项目编译与打包步骤
一 准备环境
- 安装 JDK(建议 OpenJDK 11 或更高版本):
- 安装命令:
sudo apt update && sudo apt install openjdk-11-jdk - 验证版本:
java -version、javac -version
- 安装命令:
- 安装构建工具(二选一或都装):
- Maven:
sudo apt install maven,验证:mvn -v - Gradle:
sudo apt install gradle,验证:gradle -v
- Maven:
- 建议准备一个有入口类的项目结构(如使用 Maven 快速原型:
mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false)。
二 使用Maven打包
- 在包含 pom.xml 的项目根目录执行:
mvn clean package- 产物位置:target/xxx.jar
- 常用插件与配置(设置源码/目标版本与主类,生成可执行 JAR):
- 编译器插件:
org.apache.maven.plugins maven-compiler-plugin 3.8.1 11 11 - 可执行 JAR(使用 maven-jar-plugin 指定主类):
org.apache.maven.plugins maven-jar-plugin 3.2.0 true lib/ com.example.App - 依赖外置(将依赖复制到 target/lib,与上面 manifest 的 classpathPrefix=lib/ 配合):
org.apache.maven.plugins maven-dependency-plugin 3.2.0 copy-dependencies package copy-dependencies ${project.build.directory}/lib
- 编译器插件:
- 运行:
java -jar target/xxx.jar。
三 使用Gradle打包
- 在包含 build.gradle 的项目根目录执行:
./gradlew clean build(或gradle clean build)- 产物位置:build/libs/xxx.jar
- 基本配置(设置主类,生成可执行 JAR):
plugins { id 'java' id 'application' } sourceCompatibility = '11' mainClassName = 'com.example.App' repositories { mavenCentral() } dependencies { testImplementation 'junit:junit:4.13.2' } jar { manifest { attributes 'Main-Class': mainClassName } } - 依赖外置(将运行时依赖复制到 build/libs/lib,便于与上层脚本配合):
task copyDependencies(type: Copy) { from configurations.runtimeClasspath into 'build/libs/lib' } build.dependsOn copyDependencies
- 运行:
java -jar build/libs/xxx.jar。
四 无构建工具与进阶打包
- 手动编译与打包(适合学习或小项目)
- 编译:
javac -d out src/com/example/*.java - 创建 MANIFEST.MF(与 src 同级):
Manifest-Version: 1.0 Main-Class: com.example.App - 打包:
jar cfm my-app.jar MANIFEST.MF -C out . - 运行:
java -jar my-app.jar
- 编译:
- 使用 jpackage 生成平台原生可执行安装包(JDK 14+)
- 示例:
jpackage --type app-image --input target --name myapp --main-class com.example.App --output out
- 示例:
- 使用 jlink 定制精简运行时(JDK 9+,适用于模块化项目)
- 示例:
jlink --module-path $JAVA_HOME/jmods:mods --add-modules java.base,java.logging,your.module.name --output custom-jre
- 示例:
- 使用 Docker 打包发布
- Dockerfile(多阶段示例,先构建再运行):
FROM openjdk:11-jdk-slim AS builder WORKDIR /app COPY . . RUN ./gradlew build FROM openjdk:11-jre-slim WORKDIR /app COPY --from=builder /app/build/libs/app.jar /app/app.jar EXPOSE 8080 CMD ["java","-jar","/app/app.jar"] - 构建与运行:
docker build -t myapp .;docker run -p 8080:8080 myapp。
- Dockerfile(多阶段示例,先构建再运行):
以上就是关于“Java项目Ubuntu编译打包步骤”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm