目录
2.4 maven-jar-plugin和maven-dependency-plugin插件打包
2.4.4 maven-dependency-plugin插件作用
2.4.5 maven-dependency-plugin的案例
2.5 appassembler-maven-plugin插件打包
2.6 spring-boot-maven-plugin插件springboot标准打包
一 问题阐述
1.1 概述
在讲打包方式之前,首先来说最近踩到的坑,在idea新建的maven项目,在pom文件中会自动生成一段插件的管理器:
2.我使用maven打包插件maven-assembly-plugin,将其配置添加到<plugManagement><plugs>.. ..</plugs></plugManagement>中间。
3.执行maven 打包后:报没有主清单,如下图所示:
将网上查找了个遍,痛苦到怀疑人生,也没有发现什么端倪,感觉配置的很正确,并且在eclipse中都在项目中用过。
1.2 原因
先来了解一下pluginManagement:
pluginManagement是表示插件声明,即你在项目中的pluginManagement下声明了插件,Maven不会加载该插件,pluginManagement声明可以被继承。
pluginManagement一般是用来在父POM中定义,提供给子POM使用,子POM也可以覆盖这个定义,而且你在父POM中定义了版本之后,子模块中直接应用groupId和artifactId,而不用指定版本,同时也方便统一管理;而在父POM中的pluginManagement并不会介入到Maven的生命周期。
plugins就是直接引入一个plugin,而且可以绑定到Maven相关的生命周期上。
pluginManagement主要是为了统一管理插件,确保所有子POM使用的插件版本保持一致,类似dependencies和dependencyManagement。
总结一句话:pluginManagement标签中声名的plug插件不参与maven的生命周期,不会被加载,但可以通过子类继承后,子类应用来使用。
这就是为何在plugManagemnet中配置maven-assembly-plugin插件后不起作用,找不到主类的原因。
https://blog.youkuaiyun.com/qq_15266291/article/details/77198073
1.3 解决办法
1.将plugManagement标签里内容清空,自定义的的打包插件配置在</plugmanagement>标签之外。
2.重新打包,执行jar包
执行成功ok!
二 Maven常用打包插件
2.1 pom文件无配置打包插件
1.如图
2.打包后结果
3.执行结果:无法找到执行主清单
2.2 maven-assembly-plugin插件打包
2.2.1 作用
作用:将自己项目中的代码和资源,还包含了所有依赖包的内容打成一个jar包。
2.2.2 案例操作1:入口为普通类
1.pom文件的配置:
<!--自定义打包方式-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<archive>
<manifest>
<mainClass>com.ljf.springboot.mybaits.demos.ex.TestNi</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<g