Maven可以将你的Java项目构建成一个Fat JAR。 Fat JAR是一个单个JAR文件,其中包含项目中所有已编译的Java类以及项目所依赖的所有JAR文件。

当你需要构建可执行的JAR文件时,Fat JAR会很方便。如:微服务。你可以将你的微服务及其所有依赖项打包到一个JAR文件中。这使执行变得更加容易,因为你不必在类路径中列出微服务所依赖的所有JAR文件,这简化了启动微服务的命令。

如果你需要将应用程序打包在Docker容器中,Fat JAR也很方便。无需将应用程序依赖的每个JAR文件添加到Docker容器,只需添加应用程序的Fat JAR,并且使Dockerfile与应用程序使用的外部依赖项(JAR文件)无关。

1.Fat JAR POM配置

为了使用Maven从项目中构建Fat JAR,必须在项目的POM文件中包含Fat JAR构建配置。

通过将maven-assembly-plugin包含在POM文件的plugin部分中,可以配置Maven从项目中构建Fat JAR。

<build><finalName>my-project-name</finalName><plugins><!-- other Maven plugins ... --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.1.1</version><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins>
</build>

configuration XML元素内的maven-assembly-plugin包含一个descriptorRef,它告诉Maven应构建哪种类型的程序集。 jar-with-dependencies值告诉Maven构建具有依赖关系的JAR文件,这其实是Fat JAR的另一个术语。

executions XML元素告诉Maven该Maven插件应在哪个阶段和目标期间执行。 这个maven-assembly-plugin指定在打包阶段执行。

2.使用Maven命令来构建Fat JAR

构建Fat JAR的Maven命令:

mvn clean package

当使用前面显示的maven-assembly-plugin配置执行Maven package阶段时,Maven将在target目录中输出Fat JAR,Maven将其所有其他构建(例如,编译的类,生成的JavaDocs等)都输出到该目录中。 Fat JAR的命名如下:

my-project-name-jar-with-dependencies.jar

上述Fat JAR文件名中my-project-name是示例中的build XML元素中最上面finalName XML元素的值。

其它选择参考文档: http://maven.apache.org/plugins/maven-assembly-plugin/

3.完整POM文件Fat JAR配置

这是Fat JAR配置的完整Maven POM文件:

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jenkov.myprojectname</groupId><artifactId>my-project-name</artifactId><version>1.1.0</version><packaging>jar</packaging><name>My Project Name</name><dependencies><!-- Dependencies used by project --></dependencies><build><finalName>my-project-name</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.6.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.1.1</version><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build>
</project>    

原文地址: https://www.zhblog.net/go/java/tutorial/maven-build-fat-jar?t=633

用Maven构建 Fat JAR相关推荐

  1. spring boot 使用maven和fat jar/war运行应用程序的对比

    文章目录 简介 Spring Boot Maven Plugin 使用Maven命令来运行应用程序 作为fat jar/war包运行应用程序 详解War文件 详解jar文件 如何选择 使用maven和 ...

  2. axure 小程序 lib_使用maven和fat jar/war运行应用程序的对比

    简介 上篇文章我们介绍了Spring boot的fat jar/war包,jar/war包都可以使用 java -jar 命令来运行,而maven也提供了mvn spring-boot:run 命令来 ...

  3. maven构建本地jar包到本地仓库

    maven命令: mvn:install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=1.0 -Dpackaging ...

  4. 使用Maven构建Dubbo服务的可运行jar包

    本文为<基于Dubbo的分布式系统架构视频教程>的课程系列文档,更多课程信息,请关注:http://www.roncoo.com Dubbo视频教程--基础篇--第07节--使用Maven ...

  5. maven构建可执行jar包

    一  将maven构建的工程打成jar包,并使用脚本做定时任务 1.首先将maven搭建的工程打成jar   需要在将该工程所支持的类库打在一个包中(默认情况下,maven在做mvn pakage时, ...

  6. java自带的unpack闪退,java - 使用requiresUnpack无法正常使用Maven构建的Spring Boot JAR - 堆栈内存溢出...

    我的POM看起来像这样: xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ ...

  7. 使用Intellij Idea创建第一个SpringBoot+MyBatis+MySql项目并运行(附安装教程),使用Maven构建项目并管理第三方jar

    Intellij Idea 背景 开发工具及主要框架 Maven 下载安装 settings.xml修改 IDEA配置Maven 注册私有jar Maven打包 MySql安装 配置环境变量 Inte ...

  8. Jenkins中Maven构建Archiving会重命名jar

    [问题来源]jenkins配置Maven构建时,在Archiving的时候,会修改名字: [JENKINS] Archiving /proj/ip_ers/jenkins_**/6018/s11/wo ...

  9. 【sping boot】run as maven install 和buid fat jar打包不一样 后者运行不起来

    打包后线上运行报错 11:53:10.088 [main] ERROR org.springframework.boot.SpringApplication - Application run fai ...

  10. 在HubSpot是如何应对Fat JAR困境的

    在七月底,Spring Boot和Dropwizard分别发布了1.4和1.0版本,它们都是基于Fat JAR的.随着人们更多地采用这些框架和微服务架构,Fat JAR成为了通用的部署机制. \\ F ...

最新文章

  1. python在哪里写程序和运行-如何编写和运行Python程序
  2. mysql 批量插入数据过多的解决方法
  3. linux:ubantu中pycharm专业版安装
  4. 解决com.xpand.. starter-canal 依赖引入问题
  5. opencv进阶学习笔记11:cannny边缘检测,直线检测,圆检测
  6. 【343天】每日项目总结系列081(2018.01.14)
  7. linux 下 oracle 10.2.0.1 32bit netca报错
  8. java url下载ics_使用Microsoft Graph API处理外部(Internet / .ics)日历URL
  9. centos mysql 允许远程访问
  10. oracle中使用sql查询时字段为空则赋值默认
  11. 7-2 数组元素循环右移问题 (40 分)
  12. iOS学习笔记-retain/assign/strong/weak/copy/mutablecopy/autorelease区别
  13. Linux 中Vim 命令大全
  14. 专访飞康新任CEO:云时代下,我们更懂数据保护
  15. 案例推荐《微博:随时随地迎战大流量》
  16. 【文章】《陋室铭》《陋妻铭》《微信铭》《交友铭》《老人铭》
  17. 动态网页编程新手入门必读
  18. 加入AI考拉大家庭,是一种怎样的体验?--来自考拉码农的心声
  19. 2020北航计算机夏令营机试题目个人理解
  20. oracle11g断电后无法启动,电脑突然断电后无法启动

热门文章

  1. linux 内核 谁在维护,[转载]Linux 内核维护者封杀明尼苏达大学
  2. 什么是微服务(通俗易懂)
  3. html网页怎么弄背景 图片,在html网页中如何设置背景图片?网页背景怎么设置?...
  4. 「docker实战篇」python的docker爬虫技术-python脚本app抓取(13)
  5. 创业兵法:市场需求分析
  6. PHP中 逗号,和句号.的区别
  7. 简单文本分割器V1.0发布(包括源码)
  8. cygwin安装apt-cyg
  9. 自己对网站SEO的一些简单了解
  10. SGX攻防部分POC