博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
maven 构建可执行jar文件
阅读量:4657 次
发布时间:2019-06-09

本文共 2725 字,大约阅读时间需要 9 分钟。

  • 第一部分:认识jar中的MANIFEST.MF文件

一、MANIFEST.MF文件的基本配置信息:

1.一般属性:

           Manifest-Version:定义manifest文件的版本

           Created-By:定义该文件的生成者,一般是由jar命令行工具生成

           Signature-Version:定义jar文件的签名版本(关于jar文件的签名以后详谈)

           Class-Path:(具体作用在下面讲)

2.应用程序相关属性:

   Main-Class:定义jar文件的入口类(该类必须是一个可执行的类);定义该属性后,即可通过java -jar xx.jar来执行该jar文件

3.扩展标识属性:

   Extension-Name:定义jar文件的标识

4.包扩展属性:

   Implementation-Title:定义扩展实现的标题

   Implementation-Version:定义扩展实现的版本

   Implementation-Vendor:定义扩展实现的组织

   Implementation-Vendor-Id:定义扩展实现的组织的标识

   Implementation-URL:定义扩展包的下载地址

   Specification-Title:定义扩展规范的标题

   Specification-Version:定义扩展规范的版本

   Specification-Vendor:定义维护该规范的组织

   Sealed:定义jar文件是否封存,值为true或者false

5.签名相关属性和自定义属性(略) 

二、可执行jar文件引用外部包问题

在jar包(文件)内的目录META-INF下的MANIFEST.MF文件中,有2个属性跟可执行jar文件息息相关,分别是Main-Class和Class-Path:

1. Main-Class属性定义了可执行jar文件的入口,它的值必须是一个带有main方法的java类

2. Class-Path属性定义了可执行jar文件所依赖的第三方jar文件的存放路径和jar文件名(多个jar文件之间以空格分开)

定义该属性的好处是:执行jar文件时,直接使用命令java -jar xx.jar即可,不需要再指定java命令的-classpath选项

  • 第二部分:运用Maven的插件maven-jar-plugin、maven-dependency-plugin生成可执行的jar文件

1. maven-jar-plugin插件的作用(主要是指在生成可执行jar文件时的作用)

在pom.xml文件中的配置如下:

1 
2
org.apache.maven.plugins
3
maven-jar-plugin
4
5
6
7
true
8
lib/
9
mainclass_full_name
10
11
12
13

 

 

其中:mainClass指定了MANIFEST.MF文件中的Main-Class属性的值(带有main方法的类的全名),addClasspath和classPathPrefix指定了MANIFEST.MF文件中的Class-Path属性(addClasspath为true,表示在MANIFEST.MF文件添加Class-Path属性,其值为classPathPrefix和lib-Maven Dependencies下所有的jar文件名)。

2. maven-dependency-plugin插件的作用

1 
2
org.apache.maven.plugins
3
maven-dependency-plugin
4
5
6
copy
7
install
8
9
copy-dependencies
10
11
12
${project.build.directory}/lib
13
14
15
16

其中:配置的含义就是在maven的install阶段,把lib-Maven Dependencies下的所有jar文件拷贝到项目build目录下的lib目录下(这个可修改为其它值,注意与MANIFEST.MF文件中Class-Path的值一致)

  • 第三部分:参考网站的链接
  1. maven-jar-plugin官网:http://maven.apache.org/plugins/maven-jar-plugin/
  2. MANIFEST.MF百度百科:http://baike.baidu.com/link?url=zPGW6JdZ1ypMOjengU7pOerNWrJEZGRiSxpTDQr1xYZyjOIq8jMVtxbGe_OoF4xEN853CP0M8RiVobuto7tJe_
  3. CSDN博客:http://blog.csdn.net/e5945/article/details/6215644

转载于:https://www.cnblogs.com/cwowhappy/p/3858850.html

你可能感兴趣的文章
DNS安装配置
查看>>
tab 命令
查看>>
[待解决]LR9.5添加SiteScope9.5的问题
查看>>
RadioButtonList 属性设置
查看>>
Python 基础--Python介绍
查看>>
python爬虫-简单使用xpath下载图片
查看>>
python读取txt里的json文件,存到excel,例子1
查看>>
异常处理
查看>>
BaseDao
查看>>
【codevs1282】约瑟夫问题
查看>>
【codevs1081】线段树练习2
查看>>
作业13——web基础
查看>>
原生JS获取所有标签的数量并统计每个标签的数量
查看>>
slf4j简单使用
查看>>
vue2.0 keep-alive最佳实践
查看>>
Spring Boot入门
查看>>
【OpenCV学习】椭圆拟合
查看>>
探索C#之6.0语法糖剖析
查看>>
练习2.1
查看>>
通过Word发布博客园文章
查看>>