maven 可执行 jar_Maven提示:有关可执行jar的所有信息

maven 可执行 jar

Maven提示:有关可执行jar的所有信息

可执行jar是分发代码时非常有用的工具。 这意味着,只要将Java安装在客户端计算机上,至少在Windows和Mac上,您的用户只需双击jar即可启动程序。 或者,在命令行上,可以使用简单的命令行java -jar xxx.jar轻松启动程序。

不必大惊小怪的类路径和相关的罐子。

从Maven创建可执行jar很简单,涉及使用maven-assembly-plugin 。 可以如下配置并添加到您的pom.xml中:

<plugin><artifactId>maven-assembly-plugin</artifactId><configuration><archive><manifest><mainClass>com.example.Main</mainClass></manifest></archive><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><phase>install</phase><goals><goal>single</goal></goals></execution></executions></plugin>

让我们深入研究细节:

<goal>single<goal>告诉插件我们要执行单个目标。 有关更多文档,请参见此处 。
<phase>install<phase>告诉插件我们希望此任务作为安装生命周期事件的一部分运行。
<descriptorRef>jar-with-dependencies</descriptorRef>告诉插件我们希望jar包含所有依赖项。 <mainClass>com.example.Main</mainClass>告诉插件执行jar时应启动哪个类。

在这种情况下,我将插件设置为在安装生命周期内生成一个可执行jar,但是如果希望它成为生命周期的不同部分,则当然可以更改该设置。

您希望Maven为您完成的另一项任务是在发行版中创建可执行jar。

为此,您将需要配置maven-release-plugin以创建可执行jar。 可以按照以下步骤完成:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId><version>2.5.1</version><configuration><goals>install</goals><preparationGoals>install</preparationGoals></configuration>
</plugin>

这里的关键是准备版本的配置,由release:prepare调用。 当配置为prepareGoal时,将提交之前执行安装(默认prepareGoal是干净验证)。 通过将install添加到preparationGoals中,我们确保将在提交之前构建可执行jar。 它将使用与发行版相同的编号标记。 如果我们从1.3版升级到1.4版,则可执行jar将被命名为xxx-jar-with-dependencies-1.4.jar。

比较当您将安装配置为完成目标而不是准备目标时发生的情况。 在与上述相同的示例中,从版本1.3迁移到1.4,如果将install配置为completementGoal,则将在提交运行安装,并且将生成的可执行jar称为xxx-jar-with-dependencies-1.5-SNAPSHOT.jar 。

目标(与prepareGoal和completementGoal相反)由release:perform运行。 默认情况下,它调用部署。 关于为什么我将其配置为调用install的信息,请参见此处 。

总而言之,我希望您能看到使用Maven构建可执行jar并在每次发布项目时使用正确的release标签发布它是多么容易。

翻译自: https://www.javacodegeeks.com/2015/02/maven-tip-all-about-executable-jars.html

maven 可执行 jar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

饥荒海难创建显示专用服务器,饥荒创建世界时一直显示启动服务器 | 手游网游页游攻略大全...

发布时间&#xff1a;2017-08-07TGP版怎么建立服务器呢?各位知道在TGP里如何创建服务器吗?这里给大家带来了TGP版服务器创建开服方法,教大家TGP如何创建服务器,还不会的玩家,一起来了解下吧. >&gt ...标签&#xff1a;攻略发布时间&#xff1a;2015-12-20联机过程中有…

C语言 | 6种常用的转换工具函数盘点

字符串转十六进制代码实现&#xff1a;void StrToHex(char *pbDest, char *pbSrc, int nLen){ char h1,h2; char s1,s2; int i; for (i0; i2; i) { h1 pbSrc[2*i]; h2 pbSrc[2*i1];s1 toupper(h1) - 0x30; //toupper 转换为大写字母 if (s1 > 9) s1…

企业联合体的形式_联合体如何联合?——总包新政下,联合体如何联合?系列三...

以下文字为根据科思顿企业咨询管理(上海)有限公司合伙人胡建于2020年4月10日的网课核心内容摘录&#xff0c;因内容较多&#xff0c;分三个系列发布&#xff0c;包括&#xff1a;系列之一、为什么政策突变&#xff1f;系列之二、联合体是什么&#xff1f;系列之三、联合体如何联…

netflix_学习Netflix管理员–第1部分

netflix最近几天&#xff0c;我一直在与Netflix Governator合作&#xff0c;并尝试使用Governator尝试一个小样本&#xff0c;以将其与Spring Framework的依赖项注入功能集进行比较。 以下内容并不全面&#xff0c;我将在下一系列文章中对此进行扩展。 因此&#xff0c;对于没…

laravel ajax ip,怎么在Laravel中利用AJAX动态刷新部分页面

怎么在Laravel中利用AJAX动态刷新部分页面发布时间&#xff1a;2021-02-17 13:12:43来源&#xff1a;亿速云阅读&#xff1a;119作者&#xff1a;Leah怎么在Laravel中利用AJAX动态刷新部分页面&#xff1f;很多新手对此不是很清楚&#xff0c;为了帮助大家解决这个难题&#xf…

vue2 怎么用vite_Vue2和Vue3开发组件有什么区别

我们一直都有关注和阅读很多关于Vue3的新特性和功能即将到来。但是我们没有一个具体的概念在开发中会有如何的改变和不一样的体验。还有一些童鞋已经开始又慌又抓狂了 -- “又要开始学新的写法了 (ノToT )ノ ~┻┻”。所以这里我使用Vue2和Vue3开发一个简单的表格组件来展示一下…

C语言中实现边沿函数算法及应用,这是抛弃PLC留下的痛!

很多从事PLC编程的朋友都知道&#xff0c;不管是什么品牌的PLC&#xff0c;都有上升沿和下降沿指令。❤那么什么情况下我们才会使用或必须使用边沿信号呢&#xff1f;边沿信号我们又如何获取呢&#xff1f;如图1&#xff0c;任何一个开关信号&#xff08;或数字信号&#xff09…

jboss将war放在那?_将策略插入JBoss Apiman

jboss将war放在那?JBoss apiman项目 本周刚刚发布了1.0.3.Final 。 它主要是一个错误修复版本&#xff0c;仅进行了一些相对较小的改进。 自从我上次写博客以来&#xff0c;其中的一项特殊功能就是对插件的支持。 这些插件可以轻松添加到系统中&#xff0c;以提供其他功能。 …

服务器系统装驱动精灵,云服务器安装驱动精灵

云服务器安装驱动精灵 内容精选换一换您可以选择在云服务器上安装一个或多个应用。如需在云服务器上安装其他应用&#xff0c;请参考如下操作进行添加。暂时仅允许支持VR应用的云服务器安装VR应用。暂时仅允许支持3D应用的云服务器安装3D应用。暂时仅允许支持VR应用的云服务器有…

注入器 过检测_连云港管道检测服务

连云港管道检测服务 管道稀释淤泥施工时应采用专业高压水车将两个检查井注入室内灌水&#xff0c;并使用挖泥机将检查井中的污泥与排污管混合&#xff0c;以稀释污泥为目的. 如果是手工作业应与机械作业配合以不断搅拌污泥&#xff0c;直到将其稀释到水中为止.管道吸污。 公司备…

lock.lock_HibernateCascadeType.LOCK陷阱

lock.lock介绍 引入了Hibernate 显式锁定支持以及Cascade Types之后 &#xff0c;就该分析CascadeType.LOCK行为了。 Hibernate锁定请求触发内部LockEvent 。 关联的DefaultLockEventListener可以将锁定请求级联到锁定实体子级。 由于CascadeType.ALL也包括CascadeType.LOCK …

浅谈面向对象思想下的 C 语言

如何使用OO思维方式面向对象(object Oriented&#xff0c;简称&#xff1a;OO)在于用“找对象”的方式去规划和描述问题。一、怎样“找对象” &#xff08;思维过程&#xff09;“对象”是具有共性的一个群体。以 L298N 控制马达的官方推荐方法为例&#xff0c;控制的共性在于&…

我的世界服务器里怎么无限随机传送,我的世界随机传送插件使用教程 权限指令分享...

导读&#xff1a;在我的世界中玩家可以利用随机传送插件来进行传送人物质与设定点&#xff0c;那么随意传送插件该如何使用呢、下面小编我就来教教各位&#xff0c;我的世界随意传送插件使用教程。什么是RandomLocationRandomLocation让你传送到预设区域的随机位置。可以通过命…

热敏电阻温度特性曲线_NTC热敏电阻如何选型

什么是NTCNTC 热敏电阻是负温度系数的电阻&#xff0c;其特性是电阻值随着温度的升高而呈下降趋势。这个与PTC或者PT100等正温度系数的热敏电阻相反。NTC 热敏电阻NTC的阻值-温度对应曲线如下图所示(100K为例&#xff0c;B值3950)。NTC 热敏电阻R-T曲线下面介绍选型原则。2.根据…

如何使用C语言的面向对象?

我们都知道&#xff0c;C 才是面向对象的语言&#xff0c;但是C语言是否能使用面向对象的功能?(1)继承性typedef struct _parent{int data_parent;}Parent;typedef struct _Child{struct _parent parent;int data_child;}Child;在设计C语言继承性的时候&#xff0c;我们需要做…

netflix_学习Netflix管理员–第2部分

netflix为了继续上一篇有关Netflix Governator的一些基础知识的文章&#xff0c;在这里&#xff0c;我将介绍Netflix Governator带给Google Guice的另一项增强功能–生命周期管理 生命周期管理本质上提供了进入对象所经历的不同生命周期阶段的钩子&#xff0c;以引用有关Gover…

t3软件怎么生成报表_临沂用友畅捷通T3财务通软件财税一体化

用友T3财税通针对财税一体化的发展趋势&#xff0c;在用友通上海财税专版的基础上&#xff0c;经过完善和提高。同时加入了税务核算功能、所得税汇算功能。 财税通财务软件的财税同步处理&#xff0c;可将事后税务处理的汇总涉税数据工作化整为零&#xff0c;分解到日常凭证填制…

每日干货丨C语言知识总结----循环结构

介绍循环结构可以看成是一个条件判断语句和一个向回 转向语句 的组合。另外&#xff0c;循环结构的三个要素&#xff1a;循环变量、 循环体 和循环终止条件. &#xff0c;循环结构在 程序框图 中是利用判断框来表示&#xff0c;判断框内写上条件&#xff0c;两个出口分别对应着…

apache hadoop_使用Apache Hadoop计算PageRanks

apache hadoop目前&#xff0c;我正在接受Coursera的培训“ 挖掘海量数据集 ”。 我对MapReduce和Apache Hadoop感兴趣已有一段时间了&#xff0c;通过本课程&#xff0c;我希望对何时以及如何MapReduce可以帮助解决一些现实世界中的业务问题有更多的了解&#xff08;我在这里介…

730阵列卡支持多大硬盘_凯捷月销破2万,配6座头等舱空间,到底有多舒服?试驾了才知道...

能够在还未上市的前一个月&#xff0c;就以预售的方式卖出超过2万台&#xff0c;上汽通用五菱在乘用车市场之中的号召力可见一斑。过去我们都将五菱视为商务领域的铭牌&#xff0c;包括宏光、荣光、之光等等家族&#xff0c;都在各自细分市场占据着最顶端位置。如今&#xff0c…