maven连同所有依赖包一起打包成jar包
来源:互联网 发布:因为你是范晓萱 知乎 编辑:程序博客网 时间:2024/05/16 11:56
一、依赖项的处理
java application运行时需要查找依赖的第三方jar,如果查找classpath失败,就会报错,可以先用
mvn dependency:copy-dependencies -DoutputDirectory=target/lib
命令,把依赖的jar包全部导出到target/lib这个目录下
二、利用maven-jar-plugin修改META-INF\MANIFEST.MF 清单文件
java application的最终jar里,用解压工具打开后,可以看到META-INF目录下,有一个重要的清单文件 MANIFEST.MF,这里面可以指定Main-Class及classpath,结构如下:
1 Manifest-Version: 1.02 Built-By: jimmy3 Build-Jdk: 1.7.0_094 Class-Path: lib/DataEntity-1.0.jar ...5 Created-By: Apache Maven 3.2.36 Main-Class: ctas.importer.reader.app.Program7 Archiver-Version: Plexus Archiver
其中第4行指定了classpath,也就是所依赖的jar包在什么地方,第6行表示main函数的入口类,默认情况下mvn clean package生成的jar包里,清单文件上并没有这2行,需要在pom.xml中添加插件
1 <plugin> 2 <groupId>org.apache.maven.plugins</groupId> 3 <artifactId>maven-jar-plugin</artifactId> 4 <configuration> 5 <archive> 6 <manifest> 7 <mainClass>ctas.importer.reader.app.Program</mainClass> 8 <addClasspath>true</addClasspath> 9 <classpathPrefix>lib/</classpathPrefix>10 </manifest>11 </archive>12 <classesDirectory>13 </classesDirectory>14 </configuration>15 </plugin>
第7行指定Main-Class,第9行指定classpath的相对路径,这样mvn package后,清单文件里就会自动添加Main-Class和Class-Path这二项
ok了,部署时把jar包和lib目录,都上传到服务器上 ,然后测试一下,顺利的话 java -jar xxx.jar就可以了,如果要在后台运行,前面加 nohup
如果不想把lib目录上传到服务器,我们可以利用java的打包命令把lib文件和原来的jar文件一起打包成一个jar
第一步,解压jar文件到当前目录
第二步,将lib文件夹复制到解压后的文件夹
第三步,将META-INF\MANIFEST.MF 清单文件复制到当前路径
第四步,利用Java的打包命令进行打包(选择示例2,根据自己的情况修改相应的文件名和文件夹名)
示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有文件存档到一个名为 'classes.jar' 的存档文件中:
jar cvfm classes.jar mymanifest -C foo/ .
最后有一个英文句号,不要忘记
- maven连同所有依赖包一起打包成jar包
- maven 连同依赖打成jar包
- maven工程连同所依赖的jar包一起打war包
- Android打jar包之将Android工程连同第三方jar包一起打包成jar包问题总结
- maven中把依赖的JAR包一起打包
- maven中把依赖的JAR包一起打包
- maven中把依赖的JAR包一起打包
- maven中把依赖的JAR包一起打包
- maven中把依赖的JAR包一起打包
- maven中把依赖的JAR包一起打包
- maven中把依赖的JAR包一起打包
- maven中把依赖的JAR包一起打包
- maven中把依赖的JAR包一起打包
- 利用maven-shade-plugin打包包含所有依赖jar包
- Maven打包生成包含所有依赖的jar包
- Maven打包生成包含所有依赖的jar包
- Maven自动生成可运行jar包并将依赖的jar包一起打包
- eclipse maven项目导出jar包时一起打包所依赖的相关jar包
- MVC各层的典型实现
- iOS基础之属性修饰符的区别
- springMVC日期转化注释
- 仿新浪TabLayout代码片段
- Android Studio 的 Gradle大白话讲解
- maven连同所有依赖包一起打包成jar包
- 杭电oj DNA Sorting
- 高级加密标准AES的工作模式(ECB、CBC、CFB、OFB)
- 析构函数为什么是虚函数
- 阻塞Socket和非阻塞Socket
- 【Android基础知识】Drawable Animation和View Animation
- POI创建Excel
- 算法:递推法
- CSS问题集锦