Java在Ubuntu上的打包发布方法
在打包前需安装Java开发工具包(JDK)和构建工具(如Maven/Gradle),确保系统具备编译和打包能力:
sudo apt update
sudo apt install openjdk-11-jdk
验证安装:java -version(显示版本信息即为成功)。sudo apt install maven
验证安装:mvn -version。pom.xml:添加maven-jar-plugin(指定主类)和maven-dependency-plugin(复制依赖到lib目录),确保生成的JAR包含所有依赖:<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>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.example.MainClass</mainClass> <!-- 替换为你的主类 -->
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
mvn clean package
生成的JAR文件位于target/目录(如my-app-1.0-SNAPSHOT.jar)。build.gradle:应用java和application插件,指定主类,并将依赖复制到JAR中:plugins {
id 'java'
id 'application'
}
mainClassName = 'com.example.MainClass' // 替换为你的主类
jar {
manifest {
attributes 'Main-Class': mainClassName
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
gradle clean build
生成的JAR文件位于build/libs/目录(如my-app-1.0.jar)。若需将Java应用打包为Ubuntu原生安装包(支持apt安装),可使用dpkg-deb工具:
mkdir -p my-java-app/DEBIAN my-java-app/usr/bin my-java-app/usr/share/applications
control文件(位于DEBIAN/目录):定义包元数据(名称、版本、依赖等):Package: my-java-app
Version: 1.0
Architecture: all
Maintainer: Your Name <your.email@example.com>
Depends: openjdk-11-jre # 依赖的Java运行时
Description: A brief description of your Java application
usr/bin/目录,如my-java-app):#!/bin/sh
java -jar /usr/share/java/my-java-app.jar # 替换为实际JAR路径
赋予执行权限:chmod +x my-java-app/DEBIAN/my-java-app。usr/share/java/目录(如my-java-app.jar)。cd my-java-app
sudo dpkg-deb --build .
生成的.deb文件位于上级目录(如my-java-app_1.0_all.deb),可通过sudo dpkg -i my-java-app_1.0_all.deb安装。将Java应用打包为Docker镜像,实现跨平台、一致性部署:
Dockerfile(位于项目根目录):FROM openjdk:11-jdk-slim # 使用轻量级OpenJDK镜像
WORKDIR /app
COPY target/my-app.jar . # 复制构建好的JAR(Maven示例)
EXPOSE 8080 # 暴露应用端口
CMD ["java", "-jar", "my-app.jar"] # 启动命令
docker build -t my-java-app .
docker run -p 8080:8080 my-java-app # 将容器端口8080映射到主机端口8080
此时可通过http://localhost:8080访问应用。若需在Windows平台运行Java应用,可使用Launch4j工具将JAR打包为.exe:
my-app.exe)、图标等。11)。以上方法覆盖了Java在Ubuntu上的常见打包发布场景,可根据需求选择合适的方式(如快速分发用JAR,正式发布用.deb,跨平台用Docker)。