温馨提示×

Java在Ubuntu上如何打包发布

小樊
86
2025-09-27 07:03:31
栏目: 编程语言

Java在Ubuntu上的打包发布方法

1. 准备基础环境

在打包前需安装Java开发工具包(JDK)和构建工具(如Maven/Gradle),确保系统具备编译和打包能力:

  • 安装OpenJDK(以JDK 11为例):
    sudo apt update
    sudo apt install openjdk-11-jdk
    
    验证安装:java -version(显示版本信息即为成功)。
  • 安装Maven(可选,用于项目构建):
    sudo apt install maven
    
    验证安装:mvn -version

2. 使用构建工具生成可执行JAR(最常用)

Maven项目

  • 配置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)。

Gradle项目

  • 配置build.gradle:应用javaapplication插件,指定主类,并将依赖复制到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)。

3. 打包为Debian安装包(.deb,适合Ubuntu分发)

若需将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
  • 复制JAR文件:将构建好的可执行JAR复制到usr/share/java/目录(如my-java-app.jar)。
  • 打包为.deb
    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安装。

4. 使用Docker容器化发布(跨平台部署)

将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访问应用。

5. 可选:生成Windows可执行文件(.exe)

若需在Windows平台运行Java应用,可使用Launch4j工具将JAR打包为.exe

  • 下载并安装Launch4j:从官网下载后解压。
  • 配置Launch4j
    • 选择“JAR in EXE mode”,添加你的JAR文件。
    • 配置输出路径(如my-app.exe)、图标等。
    • 在“JRE”选项卡中设置最低Java版本(如11)。
  • 生成.exe文件:点击“Build wrapper”即可生成。

以上方法覆盖了Java在Ubuntu上的常见打包发布场景,可根据需求选择合适的方式(如快速分发用JAR,正式发布用.deb,跨平台用Docker)。

0