- 第一部分:认识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 <plugin> 2 <groupId>org.apache.maven.plugins</groupId> 3 <artifactId>maven-jar-plugin</artifactId> 4 <configuration> 5 <archive> 6 <manifest> 7 <addClasspath>true</addClasspath> 8 <classpathPrefix>lib/</classpathPrefix> 9 <mainClass>mainclass_full_name</mainClass> 10 </manifest> 11 </archive> 12 </configuration> 13 </plugin>
其中: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 <plugin> 2 <groupId>org.apache.maven.plugins</groupId> 3 <artifactId>maven-dependency-plugin</artifactId> 4 <executions> 5 <execution> 6 <id>copy</id> 7 <phase>install</phase> 8 <goals> 9 <goal>copy-dependencies</goal> 10 </goals> 11 <configuration> 12 <outputDirectory>${project.build.directory}/lib</outputDirectory> 13 </configuration> 14 </execution> 15 </executions> 16 </plugin>
其中:配置的含义就是在maven的install阶段,把lib-Maven Dependencies下的所有jar文件拷贝到项目build目录下的lib目录下(这个可修改为其它值,注意与MANIFEST.MF文件中Class-Path的值一致)
- 第三部分:参考网站的链接
- maven-jar-plugin官网:http://maven.apache.org/plugins/maven-jar-plugin/
- MANIFEST.MF百度百科:http://baike.baidu.com/link?url=zPGW6JdZ1ypMOjengU7pOerNWrJEZGRiSxpTDQr1xYZyjOIq8jMVtxbGe_OoF4xEN853CP0M8RiVobuto7tJe_
- CSDN博客:http://blog.csdn.net/e5945/article/details/6215644