Maven项目打包为jar的几种方式

这里收集整理下以往打包MAVEN项目为JAR包的各种方式

##直接打包,不打包依赖包
直接打包,不打包依赖包,仅打包出项目中的代码到JAR包中。在POM中添加如下plugin即可,随后执行maven install

            <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin>

将依赖JAR包输出到lib目录方式

将项目中的JAR包的依赖包输出到指定的目录下,修改outputDirectory配置,如下面的${project.build.directory}/lib。如想将打包好的JAR包可以通过命令直接运行,如java -jar xx.jar,还需要制定manifest配置的classpathPrefix与上面配置的相对应,如上面把依赖JAR包输出到了lib,则这里的classpathPrefix也应指定为lib/;同时,并指定出程序的入口类,在配置mainClass节点中配好入口类的全类名。
这种打包方式对于JAVA项目是通用的,不管是不是springBoot的项目还是传统的JAVA项目,都可行。

     <plugins><!-- java编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>com.yourpakagename.mainClassName</mainClass></manifest></archive></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy</id><phase>install</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin></plugins>

有时为了方便,可以把classpath初在当前目录上,默认的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>

将项目依赖包和项目打为一个包

这种方式打包会将项目中的依赖包和项目代码都打为一个JAR包,其配置如下:

         <plugin><groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-assembly-plugin</artifactId>  <version>2.5.5</version>  <configuration>  <archive>  <manifest>  <mainClass>com.xxg.Main</mainClass>  </manifest>  </archive>  <descriptorRefs>  <descriptorRef>jar-with-dependencies</descriptorRef>  </descriptorRefs>  </configuration>  </plugin>

但此种方式对于传统的JAVA项目打包没问题,如是打有spring框架的JAR包就不可以了。可以采用maven-shade-plugin的插件来打包,来实现spring框架的打包
有好几位朋友说不能在使用此配置时无法将项目的依赖也打到一个JAR包中,通过追溯发现由于是执行的package命令导致发。此处应执行插件的assembly命令。如下图:

springBoot项目打包

springBoot项目打包最常用且最简单的方式是用springBoot的打包plugin

         <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin>

在POM中加入此插件,再点击maven [install]或[repackge]就会把当前项目里所有依赖包和当前项目的源码都打成一个JAR包,同时还会将没有依赖包的JAR包也打出来,以.original的就是了

groovy项目打包

如果项目中包含groovy代码,默认采用MAVEN打包时不会将groovy代码进行打包,需要加入如下配置

            <plugin><groupId>org.codehaus.gmavenplus</groupId><artifactId>gmavenplus-plugin</artifactId><version>1.2</version><executions><execution><goals><goal>addSources</goal><goal>addStubSources</goal><goal>compile</goal><goal>execute</goal></goals></execution></executions></plugin>

Maven项目打包为jar的几种方式相关推荐

  1. IDEA MAVEN项目打包成jar包的两种简单方式

    IDEA MAVEN项目打包成jar包的两种简单方式 准备了两个打包方法 1.IEDA自带打包方法 2.用Maven插件maven-shade-plugin打包 IDEA自带打包 适用于任何打包,稍微 ...

  2. eclipse中将项目打包成jar的两种方法,及其问题与解决方法

    eclipse中将项目打包成jar的两种方法,及其问题与解决方法 参考文章: (1)eclipse中将项目打包成jar的两种方法,及其问题与解决方法 (2)https://www.cnblogs.co ...

  3. java maven 打包jar_maven项目如何打jar包?eclipse将maven项目打包成jar包方法

    下面的内容是要给大家介绍eclipse将maven项目打包成jar包的方法,一起来看看整个过程是怎样的吧,希望对你的编程之路可以有所帮助哦. 利用eclipse把项目打包成jar,放入服务器执行. 1 ...

  4. eclipse打包项目为aar_eclipse中将项目打包成jar的两种方法,及其问题与解决方法...

    第一种:利用eclipse中自带的export功能 第一种方法分两种情况先来看第一种情况:没有引用外部jar的项目打包 步骤一:右键点击项目选择导出(export),选择java>jar文件(不 ...

  5. 在VSCode中将Maven项目打包成jar文件

    mvn clean install package -Dmaven.test.skip=true 直接打包,不打包依赖包, 仅打包出项目中的代码到JAR包中.在POM中添加如下plugin即可,随后执 ...

  6. java -jar maven项目打包提示.jar中没有主清单属性

    mvn package java -jar target/java_bottom_level_learning-1.0-SNAPSHOT.jar 这里报错了: target/java_bottom_l ...

  7. 将IDEA MAVEN项目打包成jar包的通用方法

    1.找到左上角File -> Project Structure,点击(中文:文件 -> 项目结构) 2. 在弹出的界面中,点击Artifacts(中文:工件),点击内置页面的左上角的+号 ...

  8. Idea将maven项目打包成jar包

    第一步 pom.xml文件中设置如下 <build><plugins><plugin><groupId>org.apache.maven.plugins ...

  9. maven项目打包出现:“未找到主清单属性”或者jar包无法正常运行

    Maven项目打包出现:"未找到主清单属性"或者jar包无法正常运行,按照我的方式就没有问题: 点击setting,找到Artifacts,点击"+",选择JA ...

最新文章

  1. 计算机操作系统第四版习题答案 第一章简答题
  2. 《Head First Python》第六章--定制数据对象
  3. BZOJ3527: [Zjoi2014]力
  4. 后台服务系统之什么是dubbo
  5. Eclipse中显示文件字符乱码
  6. python中的PEP是什么?怎么理解?(转)
  7. python opencv创建图像_OpenCV-Python 展示图像(1)
  8. 17pk扎金花基于层次的技术
  9. 前端-requests-flask对应关系 json
  10. Mellanox infinoband RDMA SDP
  11. 华为机试(6.17笔试题解析)
  12. cad怎么把图层英文变成中文_CAD图层中英文对照表.pdf
  13. 数字证书理解(CA证书签名原理)
  14. 《Python数据分析与挖掘实战》第13章——回归+DNN
  15. 镜像在国外仓库,拉取不了怎么办
  16. HTML.网页程序设计
  17. panda3d场景的主要状态
  18. java中的POJO是什么意思?
  19. Ionic3项目实战
  20. 【ureport2 vue版本实现】

热门文章

  1. C. 【UNR #2】黎明前的巧克力
  2. KNN算法原理详解及python代码实现
  3. 从 Python 可视化图表中探究王心凌爆火出圈的流量密码
  4. java实现SQL查询语句的动态拼接
  5. python跳一跳教程_使用python玩跳一跳超详细使用教程
  6. python学生创意作品-Python艺术编程节,极具创意与艺术性的趣味活动
  7. kubernetes addons之node-problem-detector
  8. 2021湖北天门高考理科成绩查询,2021年天门市高考状元名单资料,今年天门市高考状元多少分...
  9. ie11 no java plugin,修復Javascript在IE11中不起作用
  10. RabbitHole:我们的网站需要停机一些时间