idea 项目代码打包为jar包详解

目录

  • 前言
  • 一、将所有依赖和模块代码打包为一个jar
  • 二、只将模块代码打包为一个jar
  • 三、其他方法打包
    • 1.使用 spring-boot-maven-plugin 插件打包
    • 2.其他插件打包

前言

假设我有如下简单 maven 项目
idea 项目代码打包为jar包详解_第1张图片

点击 File ==> Project Structure ==> Artifacts ==> 点击加号 ==> 选择JAR ==> 选择From modules with dependencies

idea 项目代码打包为jar包详解_第2张图片

一、将所有依赖和模块代码打包为一个jar

如果你想把所有项目依赖的其他库和代码打成一个 jar,可以选择extract to the target JAR 。比如如果你项目里依赖了 fastjson.jar 等第三方 jar,可以把这些第三方 jar 也打到最终生成的 jar 里面。

1.先选择你要打包的模块和启动类,然后选择extract to the target JAR ,点击ok

idea 项目代码打包为jar包详解_第3张图片

2.确认要生成的 jar 名称(默认是项目或模块名),确认 jar 包的输出的目录,确认最终输出的 jar 里包含的依赖(我这里包含了14个其他依赖和项目代码,如果不想包含第三方依赖可以选中相关依赖点击减号进行排除),点击 Apply 和 Ok

idea 项目代码打包为jar包详解_第4张图片

3 . 点击 Build ==> Build Artifacts

idea 项目代码打包为jar包详解_第5张图片

先点击 clear 进行清除,然后再点击 Build 进行构建,就可以打成一个jar包了
(如果不点击 clear 进行清理上次的构建,直接点击Build 进行构建的话,可能会把上次构建的东西打进去导致 jar 包变得比较大)

idea 项目代码打包为jar包详解_第6张图片
idea 项目代码打包为jar包详解_第7张图片

4.构建打包提示成功后就可以在输出目录里找到打好的 jar 包了

idea 项目代码打包为jar包详解_第8张图片

二、只将模块代码打包为一个jar

如果你不想把所有项目依赖的其他库和代码都打成一个 jar,可以选择copy to the output directory and link via manifest 。比如,如果你项目里依赖了 fastjson.jar 等第三方 jar,这些第三方 jar 不会被打到最终生成的jar里面,只会把这些依赖的 jar 和最终生成的 jar 输出到一个目录下。

1.先选择你要打包的模块和启动类,然后选择copy to the output directory and link via manifest ,点击ok

idea 项目代码打包为jar包详解_第9张图片

2.确认要生成的 jar 名称(默认是项目或模块名),确认 jar 包的输出的目录,确认项目使用到的依赖,点击 Apply 和 Ok

idea 项目代码打包为jar包详解_第10张图片

3.点击 Build ==> Build Artifacts

-idea 项目代码打包为jar包详解_第11张图片

先点击 clear 进行清除,然后再点击 Build 进行构建,就可以打成一个 jar 包了
(如果不点击 clear 进行清理上次的构建,直接点击Build 进行构建的话,可能会把上次构建的东西打进去导致 jar 包变得比较大)

idea 项目代码打包为jar包详解_第12张图片
idea 项目代码打包为jar包详解_第13张图片

4.构建打包提示成功后就可以在输出目录里找到打好的 jar 包了,另外项目依赖的其他 jar 包也会输出到这个目录

idea 项目代码打包为jar包详解_第14张图片

三、其他方法打包

上面的方式是使用 idea 来打包,如果你使用的是 maven 项目,你也可以使用其他插件来打包。

1.使用 spring-boot-maven-plugin 插件打包

在 pom.xml 中的 build 标签下的 plugins 标签下加入如下配置:

            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <version>2.6.0version>
                <configuration>
                    <mainClass>com.xtool.manager.MainDemomainClass>
                    <finalName>XToolfinalName>
					 <includes>
                            <include>
                                <groupId>nothinggroupId>
                                <artifactId>nothingartifactId>
                            include>
                     includes>
                configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackagegoal>
                        goals>
                    execution>
                executions>
            plugin>

说明:

  1. mainClass 标签里是你的项目的启动类的包路径,如果你的项目没有有启动类也不需要通过 java -jar 运行的话可以删除 mainClass
  2. finalName 标签里的就是打出来的 jar 名,我这里是 XTool ,最终生成的就是 XTool.jar 。若不使用 finalName 指定,则打包生成的 jar 包名默认使用 pom.xml 文件里 artifactId 标签和 version 标签里的值作为 jar 的名。
  3. 如果你希望最终生成的 jar 包不包含第三方依赖那直接用上面的插件配置即可。如果希望最终生成的 jar 包里包含第三方依赖那就删除 includes 标签及其里面的内容

在 idea 右边侧边栏的 Maven 选项卡里点击 Lifecyle 下的 package 就可以开始打包了

idea 项目代码打包为jar包详解_第15张图片

最终生成的 jar 包就在 target 目录下

idea 项目代码打包为jar包详解_第16张图片

2.其他插件打包

除了上面的插件可以打包,还有maven-dependency-plugin、maven-shade-plugin、maven-assembly-plugin等插件也可以打包,这里就不再介绍了,感兴趣可以看下这篇文章:How to Create an Executable JAR with Maven

你可能感兴趣的:(java,intellij-idea,jar,java,idea打jar包,idea生成jar包)