Java项目打包方式汇总

致敬读者

  • 感谢阅读笑口常开生日快乐⬛早点睡觉

博主相关

  • 博主信息博客首页专栏推荐活动信息

文章目录

      • **1. 使用 Maven**
        • **1.1 默认的 `maven-jar-plugin`**
        • **1.2 Spring Boot 插件 (`spring-boot-maven-plugin`)**
        • **1.3 Maven Shade Plugin**
        • **1.4 Maven Assembly Plugin**
      • **2. 使用 Gradle**
        • **2.1 默认的 `jar` 任务**
        • **2.2 Spring Boot 插件 (`bootJar`)**
        • **2.3 Gradle Shadow Plugin**
      • **3. 手动打包(命令行)**
      • **4. 使用 IDE**
        • **4.1 IntelliJ IDEA**
        • **4.2 Eclipse**
      • **5. 使用 Ant**
      • **总结推荐**


文章前言

  • 文章均为学习工作中整理的笔记。
  • 如有错误请指正,共同学习进步。

以下是所有能够将Java项目(特别是Spring Boot项目)打包成JAR包的方式,按工具分类罗列:


1. 使用 Maven

可参考文章:Java项目打包(Maven命令打包)指南(操作简单)

1.1 默认的 maven-jar-plugin
  • 特点:生成普通JAR,不包含依赖。
  • 步骤
    1. 确保 pom.xml 中包含 maven-jar-plugin(默认已集成)。
    2. 运行命令:
      mvn clean package
      
  • 生成路径target/-.jar
1.2 Spring Boot 插件 (spring-boot-maven-plugin)
  • 特点:生成可执行的Fat JAR(包含所有依赖),适用于Spring Boot项目。
  • 配置
    <build>
      <plugins>
        <plugin>
          <groupId>org.springframework.bootgroupId>
          <artifactId>spring-boot-maven-pluginartifactId>
        plugin>
      plugins>
    build>
    
  • 运行命令
    mvn clean package
    
  • 生成路径target/-.jar
1.3 Maven Shade Plugin
  • 特点:生成包含依赖的Fat JAR,适合非Spring Boot项目。
  • 配置
    <plugin>
      <groupId>org.apache.maven.pluginsgroupId>
      <artifactId>maven-shade-pluginartifactId>
      <version>3.2.4version>
      <executions>
        <execution>
          <phase>packagephase>
          <goals><goal>shadegoal>goals>
          <configuration>
            <transformers>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>com.example.MainClassmainClass>
              transformer>
            transformers>
          configuration>
        execution>
      executions>
    plugin>
    
  • 运行命令
    mvn clean package
    
1.4 Maven Assembly Plugin
  • 特点:自定义打包方式(如包含依赖、资源文件等)。
  • 配置
    <plugin>
      <groupId>org.apache.maven.pluginsgroupId>
      <artifactId>maven-assembly-pluginartifactId>
      <version>3.3.0version>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependenciesdescriptorRef>
        descriptorRefs>
        <archive>
          <manifest>
            <mainClass>com.example.MainClassmainClass>
          manifest>
        archive>
      configuration>
      <executions>
        <execution>
          <phase>packagephase>
          <goals><goal>singlegoal>goals>
        execution>
      executions>
    plugin>
    
  • 运行命令
    mvn clean package
    

2. 使用 Gradle

2.1 默认的 jar 任务
  • 特点:生成普通JAR,不包含依赖。
  • 配置build.gradle):
    jar {
      manifest {
        attributes 'Main-Class': 'com.example.MainClass'
      }
    }
    
  • 运行命令
    ./gradlew clean build
    
  • 生成路径build/libs/-.jar
2.2 Spring Boot 插件 (bootJar)
  • 特点:生成可执行的Fat JAR,专为Spring Boot项目设计。
  • 配置build.gradle):
    plugins {
      id 'org.springframework.boot' version '2.5.4'
      id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    }
    
  • 运行命令
    ./gradlew clean bootJar
    
  • 生成路径build/libs/-.jar
2.3 Gradle Shadow Plugin
  • 特点:生成包含依赖的Fat JAR,适合非Spring Boot项目。
  • 配置build.gradle):
    plugins {
      id 'com.github.johnrengelman.shadow' version '7.1.2'
    }
    shadowJar {
      manifest {
        attributes 'Main-Class': 'com.example.MainClass'
      }
    }
    
  • 运行命令
    ./gradlew clean shadowJar
    

3. 手动打包(命令行)

  • 特点:无需构建工具,但需手动处理依赖和编译。
  • 步骤
    1. 编译Java文件:
      javac -d ./out src/main/java/com/example/*.java
      
    2. 创建清单文件 MANIFEST.MF
      Main-Class: com.example.MainClass
      Class-Path: libs/dependency1.jar libs/dependency2.jar
      
    3. 打包成JAR:
      jar cvfm app.jar MANIFEST.MF -C ./out .
      

4. 使用 IDE

4.1 IntelliJ IDEA
  • 步骤
    1. File > Project Structure > Artifacts > + > JAR > From modules with dependencies
    2. 选择主类并配置依赖。
    3. Build > Build Artifacts

可参考文章:Java项目打包(使用IntelliJ IDEA打包Java项目)

4.2 Eclipse
  • 步骤
    1. 右键项目 > Export > Java > Runnable JAR File
    2. 选择主类并配置依赖处理方式(如打包依赖到JAR内)。

5. 使用 Ant

  • 特点:传统构建工具,需手动编写脚本。
  • 配置示例build.xml):
    <target name="jar" depends="compile">
      <jar destfile="build/app.jar" basedir="build/classes">
        <manifest>
          <attribute name="Main-Class" value="com.example.MainClass"/>
        manifest>
      jar>
    target>
    
  • 运行命令
    ant jar
    

总结推荐

  • Spring Boot项目:优先使用 spring-boot-maven-plugin(Maven)或 bootJar(Gradle)。
  • 普通Java项目
    • 需要Fat JAR:用Maven Shade/Assembly插件或Gradle Shadow插件。
    • 仅打包代码:用默认的 maven-jar-pluginjar 任务。
  • 快速验证:可使用IDE的导出功能或命令行手动打包。

文末寄语

  • 关注我,获取更多内容。
  • 技术动态、实战教程、问题解决方案等内容持续更新中。
  • 《全栈知识库》技社区,集结全栈各领域开发者,期待你的加入。
  • ​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 点击下方名片获取更多内容

你可能感兴趣的:(Java,#,Spring,Boot,#,Java基础,java,开发语言,打包)