Maven打包所有依赖到一个可执行jar中
程序员文章站
2022-04-28 22:57:44
...
首先说一下比较常用的两种打包方式:
前提:maven构建可执行jar包时,如果项目依赖了pom中定义的dependency之外的外部jar包,maven-jar-plugin默认是不会把这
些额外jar包的依赖信息放在jar文件的MANIFEST.MF文件中的,这会导致jar包运行时出现找不到指定类的错误
方式一:
打包成可执行jar文件,但是将所有依赖(包括外部依赖)单独打包到另外一个指定文件夹下,通过指定Class-Path的方式关联
依赖。
1.1 打包依赖到指定文件夹
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
1.2 指定启动入口,并关联依赖
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!-- 是否绑定依赖,将外部jar包依赖加入到classPath中 -->
<addClasspath>true</addClasspath>
<!-- 依赖前缀,与之前设置的文件夹路径要匹配 -->
<classpathPrefix>lib/</classpathPrefix>
<!-- 主函数的入口 -->
<mainClass>com.beiyou.H5_ZJH</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
方式二:将整个工程打成一个可执行jar包,包含所有的依赖。
在有外部依赖的情况下,第一步依然是打包外部依赖。这里就不再赘述。同时,需要在mainfest节点下进行绑定(下面是未绑定
的例子)
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>cn.outofmemory.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- 此处指定继承合并 -->
<phase>package</phase> <!-- 绑定到打包阶段 -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
上一篇: mysql数据库管理工具phpmyadmin的配置
下一篇: HTML 文本格式化