MAVEN —— 常用插件


前言

  • 以前我对maven插件没什么概念,以为什么都是现成的本就应该是这样的,是理所当然的,所以导致很混乱不知道插件做了什么。以下是个人的理解,如有不对,希望指正。
  • 首先maven默认提供了写插件,及生命周期(这两个什么关系?)。我们经常用的clean,install,deploy等方法都是maven帮我们默认实现的方法。但是我们的需求可能是多样的,而maven只提供了一种默认的实现,我们需要其它的附加功能怎么办?比如install命令,maven帮我们将代码编译成了一般jar,但是我们可能需要的是可执行jar包或者包含所有依赖的jar怎么办?这时候就可以引入其它的插件类似于spring-boot-maven-plugin,通过相应的配置就会帮我们实现生成一个可执行的jar。
  • 所以明确你的需求,了解maven命令的效果,根据需求去查找相应的插件,所有的操作与结果都不是理所当然的。

spring-boot-maven-plugin

功能1:可以打成直接运行的Jar包

  • maven项目的pom.xml中,添加了org.springframework.boot:spring-boot-maven-plugin
    插件,当运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“Java -jar”命令就可以直接运行。

功能2: 将引用的包打包到内部

  • 一般的maven项目的打包命令,是生成一般包,不会把依赖的jar包也打包进去的,只是会放在jar包的同目录下,能够引用就可以了,但是spring-boot-maven-plugin插件,会将依赖的jar包全部打包进去。
    spring-boot-maven-plugin插件在打Jar包时会引入依赖包
configuration

指定启动类 mainclass

  • 可执行jar需要指定启动类,通过mainclass属性指定启动类,默认执行的是org.springframework.boot.loader.JarLauncher,所以需要修改为自己的。

classifier 分类器

  • classifier 是jar包名最后跟的一个字符信息。如下在打包的时候配置了该参数则生成的可执行jar包名就会带该classifier信息,如下得sponge-excelreport-web-1.0-SNAPSHOT-exec.jar。当然如果一般jar也是这样命名的,引入该jar依赖的时候也需要添加该分类器属性否则会找不到。
goals
  • goals默认是repackage 类型,其它的暂时未了解,用到再详细记录

repackage

  • 重复打包一个可执行的jar包。
问题及解决

问题1

  • 问题:在多模块项目的情况下,把该插件加到parent的module中会对所有的子module生效,就会导致所有的子module都会生成可执行jar。由于可执行jar的名称默认同一般jar包名称一致会导致一般jar包被覆盖删除,如果该module是被其它module引用的(只有一般jar可以实现被引用,可执行jar格式不对不行),则会报出找不到class等错误。
  • 解决方案1:将该插件只加入到具体的module中,不要加到parent的module中。这也是最常用的解实现方案。
  • 解决方案2:添加classifier 属性,可执行jar包的名称就同一般jar不一致避免重名覆盖删除问题。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>org.sponge.xxx.XxxxApplication</mainClass>
        <classifier>exec</classifier>
    </configuration>
    <executions> 
     <execution> 
     <goals> 
      <goal>repackage</goal> 
      </goals> 
      </execution> 
       </executions>

</plugin>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值