通过maven管理jar,当工程是jar类型时,发布时无法将依赖的jar一起打成jar包,本文将解决这个问题,和大家分享讨论
第一步,首先在pom.xml文件中,添加maven-assembly-plugin插件,代码如下
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.2.1</version> <configuration> <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> </configuration> </plugin>
assembly.xml代码如下:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>jar-with-dependencies</id> <formats> <format>jar</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <dependencySets> <dependencySet> <unpack>false</unpack> <scope>runtime</scope> </dependencySet> </dependencySets> <fileSets> <fileSet> <directory>${project.build.outputDirectory}</directory> </fileSet> </fileSets> </assembly>
通过assembly.xml描述,我们可以将第三方依赖,统一打包到{artifactId}-jar-with-dependencies.jar 这个jar包,这样方便我们管理第三方依赖
第二步,通过maven的maven-jar-plugin插件,我们可以配置MANIFEST.MF中的Main-Class和Class-Path,声明程序入口和依赖包的路径,代码如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.2</version> <configuration> <archive> <manifest> <!--程序入口--> <mainClass>cn.creditease.loan.exchange.main.server.SpringRmiServer</mainClass> <addClasspath>true</addClasspath> <!--依赖的第三方包路径--> <classpathPrefix>lib/</classpathPrefix> </manifest> <manifestEntries> <Class-Path>.</Class-Path> </manifestEntries> </archive> </configuration> </plugin>
第三步,新建一个文件夹,比如E:\test,将{artifactId}-jar-with-dependencies.jar和java -jar E:\test\{artifactId}.jar拷贝到test目录,在test目录下,新建一个lib目(<classpathPrefix>lib/</classpathPrefix>,放到lib目录下)和一个startup.bat文件,编辑startup.bat文件,添加 java -jar E:\test\{artifactId}.jar
最后,用压缩工具打开{artifactId}-jar-with-dependencies.jar,将里面所有的第三方jar全部拷贝到lib目录下,运行startup.bat文件,就可以运行!