温馨提示×

Ubuntu Java如何打包发布

小樊
37
2025-10-24 19:11:56
栏目: 编程语言

Ubuntu Java打包发布全流程指南

一、前期准备:安装Java环境与构建工具

在打包前,需确保Ubuntu系统已安装Java开发工具包(JDK)和构建工具(Maven/Gradle),这是Java项目编译与打包的基础。

  1. 安装OpenJDK
    推荐使用OpenJDK(如11或21版本),通过以下命令安装:
    sudo apt update
    sudo apt install openjdk-11-jdk  # 或 openjdk-21-jdk
    
    安装完成后,验证JDK版本:
    java -version  # 输出JDK版本信息即表示成功
    
  2. 安装Maven/Gradle
    • Maven(常用构建工具):
      sudo apt install maven
      mvn -v  # 验证安装(输出Maven版本及JDK信息)
      
    • Gradle(替代方案):
      sudo apt install gradle
      gradle -v  # 验证安装
      

二、使用Maven打包(适用于Maven项目)

若项目采用Maven管理依赖,可通过pom.xml配置快速生成可执行JAR包。

  1. 配置pom.xml
    在项目根目录的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>
                <groupId>org.apache.maven.plugins</groupId>
                <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>
    
  2. 执行打包命令
    进入项目根目录,运行以下命令(clean清除旧构建,package编译并打包):
    mvn clean package -DskipTests  # -DskipTests跳过测试(可选)
    
  3. 获取打包结果
    打包完成后,在target目录下生成可执行JAR包(如your-project-1.0-SNAPSHOT.jar),包含编译后的代码和依赖库。

三、使用Gradle打包(适用于Gradle项目)

若项目采用Gradle管理,通过build.gradle配置生成可执行JAR包。

  1. 配置build.gradle
    在项目根目录的build.gradle中添加application插件(指定主类),并配置jar任务(复制依赖到JAR内):
    plugins {
        id 'java'
        id 'application'
    }
    group 'com.example'
    version '1.0-SNAPSHOT'
    sourceCompatibility = 11  // 匹配JDK版本
    repositories {
        mavenCentral()
    }
    dependencies {
        // 添加项目依赖(如testImplementation 'junit:junit:4.12')
    }
    mainClassName = 'com.example.MainClass'  // 替换为你的主类全限定名
    jar {
        manifest {
            attributes 'Main-Class': mainClassName
        }
        from {
            configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
        }
    }
    
  2. 执行打包命令
    进入项目根目录,运行以下命令:
    gradle clean build
    
  3. 获取打包结果
    打包完成后,在build/libs目录下生成可执行JAR包(如your-project-1.0-SNAPSHOT.jar)。

四、使用jpackage打包(生成原生安装包,JDK 14+)

若需要将Java应用打包为原生安装包(如.deb.exe),可使用JDK自带的jpackage工具(适用于JDK 14及以上版本)。

  1. 配置打包参数
    在项目根目录创建jpackage配置(如jpackage.properties),指定应用名称、主类、输出路径等:
    name=MyJavaApp
    main-jar=target/your-project-1.0-SNAPSHOT.jar  # 替换为你的JAR路径
    main-class=com.example.MainClass  # 替换为你的主类
    output=output
    type=deb  # 生成.deb安装包(Windows用exe,macOS用dmg)
    
  2. 执行打包命令
    jpackage @jpackage.properties
    
  3. 获取打包结果
    打包完成后,在output目录下生成原生安装包(如MyJavaApp_1.0_amd64.deb),可直接安装到Ubuntu系统。

五、部署与运行打包后的应用

无论使用哪种打包方式,最终需将生成的JAR包或安装包部署到目标环境(如Ubuntu服务器)。

  1. 传输文件到服务器
    使用scp命令将打包文件传输到服务器(本地→服务器):
    scp target/your-project-1.0-SNAPSHOT.jar user@your_server_ip:/path/to/deploy
    
  2. 运行应用
    在服务器终端中,进入JAR包所在目录,运行以下命令:
    java -jar /path/to/deploy/your-project-1.0-SNAPSHOT.jar
    
    若需后台运行(守护进程),可添加nohup&
    nohup java -jar /path/to/deploy/your-project-1.0-SNAPSHOT.jar > app.log 2>&1 &
    
    app.log为日志文件,记录应用输出)

六、可选:使用Docker容器化部署(提升可移植性)

若需要跨平台部署或隔离环境,可将Java应用打包为Docker镜像。

  1. 创建Dockerfile
    在项目根目录创建Dockerfile,定义镜像基础(如OpenJDK)、复制JAR包、暴露端口:
    FROM openjdk:11-jdk-slim  # 使用轻量级OpenJDK镜像
    WORKDIR /app
    COPY target/your-project-1.0-SNAPSHOT.jar /app/app.jar  # 替换为你的JAR路径
    EXPOSE 8080  # 暴露应用端口(根据实际情况调整)
    CMD ["java", "-jar", "app.jar"]  # 启动命令
    
  2. 构建与运行Docker镜像
    • 构建镜像:
      docker build -t my-java-app .
      
    • 运行容器:
      docker run -p 8080:8080 my-java-app  # 将容器8080端口映射到主机8080端口
      

通过以上步骤,可在Ubuntu系统上完成Java项目的打包与发布,根据需求选择合适的打包方式(JAR、原生安装包、Docker镜像),实现应用的快速部署与运行。

0