maven 构建可执行jar文件

  • 第一部分:认识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的值一致)

  • 第三部分:参考网站的链接
  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

maven 构建可执行jar文件

时间: 2024-10-26 21:55:47

maven 构建可执行jar文件的相关文章

Spring Boot Maven 打包可执行Jar文件!

Maven pom.xml 必须包含 [plain] view plain copy <packaging>jar</packaging> [html] view plain copy <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</ar

Spring Boot Maven 打包可执行Jar文件

本文转载自:http://blog.csdn.net/smilecall/article/details/56288972 Maven pom.xml 必须包含 <packaging>jar</packaging> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-mave

dubbo总结(5)——使用maven构建可执行jar包

启动dubbo服务的的方法大概有三个 1.servlet容器类似tomcat 2.自建main方法,使用spring 3.使用dubbo提供的main方法 优缺点分析: 使用servlet容器会使得端口管理复杂,内存造成不必要的浪费.使用自建main方法,没有使用上官方提供的main方法会造成不可估计的错误,使用dubbo本身提供的main方法,可以实现优雅关机. 优雅关机我的理解是在所有服务都协调好的情况下实现服务的停止. 下面是main方法的代码 在构建的过程中,特别需要注意的是maven

maven 构建可执行 jar ,并引入所需所有依赖 jar

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptor

[Maven]Maven构建可执行的jar包(包含依赖jar包)

----------------------------------------------------------------- 转载请注明出处! 博主:疲惫的豆豆 链接:http://www.cnblogs.com/dzblog/p/6913809.html ----------------------------------------------------------------- 目标: 将依赖的第三方jar包打进去 方法: maven-assembly-plugin 环境: IDE

Gradle构建可执行Jar包(转载请注明出处)

最近开始接触Java,认识到一个似乎比Maven好用的构建工具Gradle,还来不及细细研究,但是需要构建一个可执行Jar包.上网查了一下.中文的文章千篇一律的提到一个插件apply plugin: 'executable-jar' (https://github.com/stigkj/gradle-executable-jar-plugin) ,也不知道是谁复制了谁的. 但是构建的时候不认这个插件,所以寻找其他方法. 用压缩软件打开Eclipse生成的可执行Jar包与Gradle构建的Jar包

Apache Maven 打包可执行jar

在本文的 参考资料 部分,您将发现大量介绍 Maven 的入门教程.本文的 5 个技巧目的是帮助您解决即将出现的一些问题:使用 Maven 管理您的应用程序的生命周期时,将会出现的编程场景. 1. 可执行的 JAR 文件 使用 Maven 构建一个 JAR 文件比较容易:只要定义项目包装为 “jar”,然后执行包装生命周期阶段即可.但是定义一个可执行 JAR 文件却比较麻烦.采取以下步骤可以更高效: 在您定义可执行类的 JAR 的 MANIFEST.MF 文件中定义一个 main 类.(MANI

11) 生成可执行jar文件 maven-shade-plugin

搜索 site:maven.apache.org maven-assembly-plugin http://maven.apache.org/plugins/maven-assembly-plugin/usage.html All goals except assembly:single have been deprecated. 以上不能使用,以下可以. http://maven.apache.org/plugins/maven-shade-plugin/ examples Executabl

Maven编译可执行jar

打包: 第一种情况:独立项目,且无第三方依赖包 这种情况下,我们需要maven的maven-jar-plugin插件来帮我们打包.请在项目pom.xml中的plugin配置处加入如下内 <plugin>     <artifactId>maven-jar-plugin</artifactId>     <version>2.3.2</version>     <configuration>         <archive>