Maven工程打jar包

  • 一、IDEA自带打包插件
  • 二、maven插件打包
    • 2.1 制作瘦包(直接打包,不打包依赖包)
    • 2.2 制作瘦包和依赖包(相互分离)
    • 2.3 制作胖包(项目依赖包和项目打为一个包)
    • 2.4 制作胖包(transform部分自定义)
  • 三、SpringBoot项目打包
  • 四、Scala项目打包
  • 五、groovy项目打包

一、IDEA自带打包插件

内容:此种方式可以自己选择制作胖包或者瘦包,但推荐此种方式制作瘦包。
输出:输出目录在out目录下
流程步骤

  1. 第一步: 依次选择 file->projecct structure->artifacts->点击+ (选择jar)->选择 from module with dependencies
  2. 第二步:弹出窗口中指定Main Class,是否选择依赖jar包,是否包含测试。(尽量不选依赖包,防止依赖包选择不全)
  3. 第三步:点击Build–>Build Artifacts–>选择bulid

二、maven插件打包

输出:输出目录在target目录下

2.1 制作瘦包(直接打包,不打包依赖包)

内容:仅打包出项目中的代码到JAR包中。
方式:在pom.xml中添加如下plugin; 随后执行maven install

 <!-- java编译插件 -->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>指定版本</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration>
</plugin>

2.2 制作瘦包和依赖包(相互分离)

内容:将依赖JAR包输出到lib目录方式(打包方式对于JAVA项目是通用的)
将项目中的JAR包的依赖包输出到指定的目录下,修改outputDirectory配置,如下面的${project.build.directory}/lib。
方式

  1. pom.xml的build>plugins中添加如下配置。

  2. 点击maven project(右边栏)->选择Lifecycle->点击package打包
    注意:如果想将打包好的JAR包通过命令直接运行,如java -jar xx.jar。需要制定manifest配置的classpathPrefix与上面配置的相对应。如上面把依赖JAR包输出到了lib,则这里的classpathPrefix也应指定为lib/;同时,并指定出程序的入口类,在配置mainClass节点中配好入口类的全类名。

    org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 UTF-8 org.apache.maven.plugins maven-jar-plugin true lib/ com.yourpakagename.mainClassName org.apache.maven.plugins maven-dependency-plugin copy install copy-dependencies ${project.build.directory}/lib

注意:默认的classpath会在jar包内。为了方便,可以在Main方法配置后加上manifestEntries配置,指定classpath。

<plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-jar-plugin</artifactId>  <configuration>  <classesDirectory>target/classes/</classesDirectory>  <archive>  <manifest>  <!-- 主函数的入口 -->  <mainClass>com.yourpakagename.mainClassName</mainClass>  <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->  <useUniqueVersions>false</useUniqueVersions>  <addClasspath>true</addClasspath>  <classpathPrefix>lib/</classpathPrefix>  </manifest>  <manifestEntries>  <Class-Path>.</Class-Path>  </manifestEntries>  </archive>  </configuration>
</plugin>

2.3 制作胖包(项目依赖包和项目打为一个包)

内容:将项目中的依赖包和项目代码都打为一个JAR包
方式

  1. pom.xml的build>plugins中添加如下配置;

  2. 点击maven project(右边栏)->选择Plugins->选择assembly->点击assembly:assembly
    注意:1. 针对传统的JAVA项目打包;
    2. 打包指令为插件的assembly命令,尽量不用package指令。

    org.apache.maven.plugins maven-assembly-plugin 2.5.5 com.xxg.Main jar-with-dependencies

2.4 制作胖包(transform部分自定义)

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>2.4.3</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><filters><filter><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude><exclude>META-INF/*.DSA</exclude><exclude>META-INF/*.RSA</exclude></excludes></filter></filters><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.handlers</resource></transformer><transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.schemas</resource></transformer><transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.tooling</resource></transformer><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.xxx.xxxInvoke</mainClass></transformer></transformers><minimizeJar>true</minimizeJar><shadedArtifactAttached>true</shadedArtifactAttached></configuration></execution></executions>
</plugin>

三、SpringBoot项目打包

内容:将当前项目里所有依赖包和当前项目的源码都打成一个JAR包,同时还会将没有依赖包的JAR包也打出来,以.original保存
方式

  1. 在pom.xml的build>plugins中加入如下配置

  2. 点击maven project(右边栏)->选择Lifecycle->点击package或install打包

    org.springframework.boot spring-boot-maven-plugin

四、Scala项目打包

方式

  1. 在pom.xml的build>plugins中加入如下配置

  2. 点击maven project(右边栏)->选择Lifecycle->点击package或install打包

    org.scala-tools maven-scala-plugin compile testCompile ${scala.version} -target:jvm-1.5

五、groovy项目打包

方式

  1. 在pom.xml的build>plugins中加入如下配置

  2. 点击maven project(右边栏)->选择Lifecycle->点击package或install打包

    org.codehaus.gmavenplus gmavenplus-plugin 1.2 addSources addStubSources compile execute

Maven工程打jar包的N种方式相关推荐

  1. maven 引入外部jar包的几种方式

    方式1:dependency 本地jar包 <dependency><groupId>com.hope.cloud</groupId> <!--自定义--&g ...

  2. 关于IDEA maven工程打jar包无法引入手动导入的jar包问题的解决方式

    关于IDEA maven工程打jar包无法引入手动导入的jar包问题的解决方式 昨天在完成一个模块的编写后,要将项目打成jar包后发给测试人员,但是有一个手动引入的jar包一直出现找不到程序包的错误, ...

  3. docker部署jar包的几种方式

    docker部署jar包的几种方式 前言 使用Dockerfile手动打包jar 简单打包运行 进化:可复用容器 究极进化:jdk镜像直接创建可服用容器 超究极进化:maven插件打包(不推荐) 无聊 ...

  4. Eclipse下导入外部jar包的3种方式

    转载自  Eclipse下导入外部jar包的3种方式   我们在用Eclipse开发程序的时候,经常要用到第三方jar包.引入jar包不是一个小问题,由于jar包位置不清楚,而浪费时间.下面配图说明3 ...

  5. Intellij IDEA 添加jar包的三种方式

    Intellij IDEA 添加jar包的三种方式 inzaghihalo https://blog.csdn.net/superinzaghi747/article/details/80539095 ...

  6. Linux 运行jar包的几种方式

    nohup java -jar wechat-push-0.0.1-SNAPSHOT.jar > wechat-push-0.0.1.out 2>&1 & 一.Linux ...

  7. 全网最全Linux 运行jar包的几种方式

    一.Linux 运行jar包的几种方式 方式一: java -jar xxx.jar 最常用的启动jar包命令,特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 ...

  8. Maven工程引入jar包(转)

    Maven项目引入jar包的方法,希望能帮助有需要的朋友们 法一.手动导入:项目右键->Build Path->Configure Build Path->选中Libraries-& ...

  9. 从Maven中央仓库网站下载jar包的两种方式,将会伴随java后端开发者的整个职业生涯

    这个肥肠重要的网站就是:https://mvnrepository.com/ 下面我会以mysql-connector-java-8.0.26.jar为例,教会你使用两种方式下载使用jar包资源 首先 ...

最新文章

  1. 全国成人计算机考试题,成人计算机考试试题.docx
  2. 阿里云弹性计算产品负责人:让客户用上本地化的公共云
  3. c++中unordered_map的坑
  4. all方法 手写promise_promise.all的实现
  5. 项目思考001---近期这个电台购物项目的一点点思考
  6. rails提供的validators
  7. cocos2dx 云彩特效
  8. PHP文件上传后缀名与文件类型对照表
  9. cmake导入so库_(转)HelloWorld CMake CMake中构建静态库与动态库及其使用
  10. task 13-change the lcd to 32bpp form 16bpp.
  11. linux的shell命令
  12. 51单片机的红外计数器设计
  13. linux shell 切换目录,如何在Shell中快速切换目录?
  14. Miss okhttp
  15. phpunit问题与解决
  16. PPPoE获取到32位掩码的研究
  17. 零基础编程教学实录-000 思考要与不要
  18. 茜色的坂道SP线是啥鸟语?3级E文果然功力不够
  19. 一个电脑接两个显示器(win10)
  20. CSS (3) | 盒子

热门文章

  1. Apollo之Canbus处理来自Control的Cmd
  2. “只要3分钟,我就能扒光你的隐私!” | 互联网时代,14亿中国人都在裸奔
  3. ROS学习:cv_bridge与opencv版本冲突三种解决方案
  4. Android看韩漫软件,第一韩漫app-第一韩漫安卓版v1.0
  5. 万物皆对象,Python的对象概述(简述)
  6. 利用vscode高效阅读《You Don't Know JS》
  7. OJ每日一练——鸡尾酒疗法
  8. 个人网站如何防御攻击?
  9. 工控服务器什么作用,服务器与工控机的用处和区别在哪?
  10. jupterLab 路径报错: No such file or directory