项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

maven有两种生成可执行jar包的插件,能够自动加载依赖包。现在我们就针对这两种插件来分别说明。

1.maven-assembly-plugin

为了简单方便,利用maven的assembly插件将依赖的jar包都打包到一个jar中。这样无论拷贝到哪里,直接运行即可,不需要修改任何配置与代码。

看一个assembly的使用实例:

            <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>2.6</version><executions><execution><!--绑定到package的生命周期上 --><phase>package</phase><goals><goal>attached</goal></goals></execution></executions><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest></manifest></archive></configuration></plugin>

assembly的配置项非常多,这里只用了很简单的几个,具体配置可以查阅相关文档。

2.appassembler-maven-plugin

appassembler-maven-plugin 的优势是能够自动生成window和linux的启动脚本,省去了自己再另写一个脚本的时间。而前面maven-assembly-plugin 生成jar包后需要执行 java -jar **.jar命令运行jar包。
同样看一个实例

            <plugin><groupId>org.codehaus.mojo</groupId><artifactId>appassembler-maven-plugin</artifactId><version>1.1.1</version><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>assemble</goal></goals></execution></executions><configuration><!-- 配置文件的目标目录 --><configurationDirectory>conf</configurationDirectory><!-- 从哪里拷贝配置文件 (默认src/main/config) --><configurationSourceDirectory>conf</configurationSourceDirectory><!-- 拷贝配置文件到上面的目录中 --><copyConfigurationDirectory>true</copyConfigurationDirectory><includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath><!-- lib目录中jar的存放规则,默认是${groupId}/${artifactId}的目录格式,flat表示直接把jar放到lib目录 --><repositoryLayout>flat</repositoryLayout><!-- 打包的jar,以及maven依赖的jar放到这个目录里面 --><repositoryName>lib</repositoryName>       <!-- 根目录 --><assembleDirectory>${project.build.directory}/${project.artifactId}-${project.version}</assembleDirectory><binFileExtensions><unix>.sh</unix></binFileExtensions><platforms><!-- 生成linux平台的执行脚本 --><platform>unix</platform></platforms><extraJvmArguments>-Xmx8000m-Djava.security.krb5.conf=$BASEDIR/conf/krb5.conf-Dhadoop.property.hadoop.client.keytab.file=$BASEDIR/conf/h_message_push.keytab-Dhadoop.property.hadoop.client.kerberos.principal=h_message_push@XIAOMI.HADOOP-Dhadoop.property.hadoop.security.authentication=kerberos</extraJvmArguments><programs><program><mainClass>XXX</mainClass><name>XXXXX</name></program></programs></configuration></plugin>

如同前面提到的,在pom里面添加appassembler-maven-plugin打包完成以后,会自动生成一个bin目录,bin里面就包含有运行XXX主类的.sh脚本。

maven生成可执行jar包相关推荐

  1. 如何通过maven打包可执行jar包

    一.目的 介绍将代码打包成jar包的四种形式: 只打包本项目的代码,不包括依赖的jar包,并且不可直接通过java -jar xxx.jar执行(应用场景:我们日常使用依赖的jar包) 只打包本项目的 ...

  2. Maven打包可执行jar包方法大全(史上最全)

    目录 打包方法 方法一:使用maven-jar-plugin和maven-dependency-plugin 方法二:使用maven-assembly-plugin (推荐) 方法三:使用maven- ...

  3. maven构建可执行jar包

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

  4. maven打的包带exec包比不带的大_spring boot maven打包可执行jar包缺少依赖包的问题...

    问题描述:spring boot使用maven的package命令打出来的包,却不包含依赖的jar包 问题原因:打包时使用了maven默认的maven-jar-plugin插件,而不是spring-b ...

  5. mvn 打包可执行包_如何用Maven打包可执行jar包

    在pom文件里面加入如下代码: org.apache.maven.plugins        maven-compiler-plugin                    1.7         ...

  6. 使用Maven 实现打包生成一个可执行jar包:附详细配置解释说明

    1. 需求 项目打包,满足以下要求: 1.整个项目打一个Zip包下面包括应用程序.应用程序依赖的jar包.说明文档 2.项目打的jar包可以执行不同类里的Main函数 3.项目源码打的jar包要与依赖 ...

  7. Maven 生成打包可执行jar包

    文章目录 1. 需求 2. 开发环境 3. Maven打包插件介绍 4. Maven使用maven-jar-plugin打可执行jar包 5. Maven使用maven-assembly-plugin ...

  8. 【收藏】Maven 生成打包可执行jar包

    Maven 生成打包可执行jar包 https://blog.csdn.net/daerzei/article/details/82883472

  9. 自动生成html的jar,用Maven快速生成带有依赖的可执行jar包

    一.背景 最近项目在做微服务的拆分,那么我们想让我们的容器启动更加的轻量级,所以我们选择放弃tomcat等容器,而是通过maven生成带有指定依赖的可执行jar包的方式进行处理,本文我将分享如何通过m ...

  10. maven导出Java方法_eclipse导出maven工程的可执行jar包

    一.eclipse导出maven工程的可执行jar包 建立两个maven工程 ZKServer 和ZKClient 注意:用maven进行开发管理的话,默认的打出来的jar包是不能运行的,需要在pom ...

最新文章

  1. C语言解析命令行函数:getopt系列
  2. php编写一个学生类_PHP实现简单的学生信息管理系统(web版)
  3. 被边缘化的“卓越亚马逊”
  4. Composer/Packagist 最新国内源
  5. php列表调多图,列表中调用多图显示的文章
  6. 一条案例:如何选择合适的第三方数据源
  7. HDU1210 Eddy's 洗牌问题【递推函数+模拟】
  8. Atitit.实现继承的原理and方法java javascript .net c# php ...
  9. B2C电商产品系统分析
  10. 钟平逻辑英语语法_钟平逻辑英语教程视频1-5季全(含笔记 支持百度云)
  11. 宽带服务器维护查询,网络连接状态查询方法
  12. [team]开发中的“最速曲线”
  13. 【转】ARM GIC中断系列(三):gicv3架构基础
  14. 通达OA11.6复现
  15. 计算机 布局菜单栏 无法打勾,w7系统 我的电脑工具栏不见了
  16. windows作为产品的一些设置和开发(经验之谈)
  17. 跨页面清除Cookie信息
  18. 西方经济学【微观】名词缩写整理
  19. 哪款蓝牙耳机音质好?2020国产高性价比高音质蓝牙耳机分享
  20. adb修改android设备mac地址

热门文章

  1. 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)...
  2. 配置ssh免密码登录
  3. Spark SQL External Data Sources JDBC官方实现写测试
  4. Qt--将Qt 动态链接生成的exe及依赖dll打包方法
  5. [jQuery] 按比例缩小图片
  6. 很全的WebGL教程
  7. C# 程序中使用 SQLite 数据库
  8. 对mysql having 的理解
  9. MySQL 数据库 alter 和 update 的区别
  10. 在阿里云上试用 Knative 1