maven 构建可执行jar文件

it2026-03-08  6

第一部分:认识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_博客:http://blog.csdn.net/e5945/article/details/6215644

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

最新回复(0)