Maven如何构建可执行的jar包(包含依赖jar包)

  

<强>目标:

  

将依赖的第三方jar包打进去

  

<强>方法:

  

maven-assembly-plugin   

<强>环境:

  

2016.3的想法   JDK 1.8

  

<强>遇到的问题:

  

此处耗时2天时间,遇到过的坑:

  

1。修改完pom.xml后,不生效。

  

——改pom。xml后,代码不生效,是因为对想法工具不熟,在修改完xml后,需要点工具右下角的进口变化或者直接点auto-import就可以一劳永逸了。

  

2。生成jar后,想法可以执行,但是java jar无法执行,报错异常的线程“主要”java.lang.NoClassDefFoundError

  

如果修改砰的一声。xml中的mainClass生效了,说不定是mainClass传入的不对,使用mvn exec: java -Dexec.mainClass=癱om.delon.main.Test”可以尝试主方法是否正确。

  

如果想用编译测试。java文件,可以使用mvn清洁编译执行:java -Dexec.mainClass=癱om.delon.main.Test”

  

3。生成jar后,想法可以执行,java jar也可以执行,但是缺少相关依赖,报错异常的线程“主要”. lang。NoClassDefFoundError: okhttp3/RequestBody

  

参考如下解决方式即可。

  

<强> maven构建jar包的步骤:

  

1。执行可执行的类,代码内需要有入口主要方法

  

2。通过mvn包来构建jar包

  

3。使用java jar test.jar来执行jar包

  

<强>一,包含依赖jar包

  

maven的pom.xml配置文件

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt;项目xmlns=" http://maven.apache.org/POM/4.0.0 "   xmlns: xsi=" http://www.w3.org/2001/XMLSchema-instance "   xsi: schemaLocation=" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”比;   & lt; modelVersion> 4.0.0      & lt; groupId> com.xxx.delon   & lt; artifactId> bugly   & lt; version> 1.0 -snapshot         & lt; dependencies>   & lt; !——工程所需的jar包引用开始——比;   & lt; !——单元测试——比;   & lt; dependency>   & lt; groupId> junit   & lt; artifactId> junit   & lt; version> 4.7 & lt;/version>   & lt; scope> test   & lt;/dependency>      & lt; !——代码所需依赖——比;   & lt; dependency>   & lt; groupId> com.squareup.okhttp3   & lt; artifactId> okhttp   & lt; version> 3.3.0   & lt;/dependency>      & lt; !——代码所需依赖——比;   & lt; dependency>   & lt; groupId> com.fasterxml.jackson.core   & lt; artifactId> jackson-databind   & lt; version> 2.2.2   & lt;/dependency>   & lt; !——工程所需的jar包引用开始——比;   & lt;/dependencies>         & lt; build>   & lt; plugins>      & lt; plugin>   & lt; artifactId> maven-assembly-plugin   & lt; configuration>   & lt; appendAssemblyId> false   & lt; descriptorRefs>   & lt; descriptorRef> jar-with-dependencies   & lt;/descriptorRefs>   & lt; archive>   & lt; manifest>   & lt; !——此处指定主方法入口的类——比;   & lt; mainClass> com.xxx.uploadFile   & lt;/manifest>   & lt;/archive>   助教& lt;/configuration>   & lt; executions>   & lt; execution>   & lt; id> make-assembly   & lt; phase> package   & lt; goals>   & lt; goal> assembly   & lt;/goals>   & lt;/execution>   & lt;/executions>   & lt;/plugin>      & lt;/plugins>   & lt;/build>      & lt;/project>      

生成jar包,会生成在目标目录下

        mvn包      

解压缩缺陷- 1.0 - snapshot.jar→meta - inf→manifest . mf

        Manifest-Version: 1.0   Archiver-Version:丛文档   由:Apache Maven   由:·德龙   Build-Jdk: 1.8.0_112   主类:com.xxx.uploadFile      

执行:         #运行jar   java jar test.jar      

也可以通过如下命令

        mvn组装:大会            #跳过测试   mvn -Dmaven.test。跳过=true组装:大会      

注意:在执行这个命令之前,必须先配置Maven的环境变量、检查是否配置可通过命令:mvn - version

Maven如何构建可执行的jar包(包含依赖jar包)