Springboot maven plugin插件原理及作用

  要记住:spring-boot-maven-plugin插件在打Jar包时会引入依赖包

可以打成直接运行的Jar包

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

可以引入依赖包

  一般的maven项目的打包命令,不会把依赖的jar包也打包进去的,只是会放在jar包的同目录下,能够引用就可以了,但是spring-boot-maven-plugin插件,会将依赖的jar包全部打包进去。比如下面这个jar包的BOOT/INF/lib目录下面就包含了所有依赖的jar包

  

  spring-boot-maven-plugin插件,在很大程度上简化了应用的部署,只需要安装了 JRE 就可以运行。

  但是俺测试发现它的一个缺点,就是它打包成的这个jar包,在被别的项目引用的时候,会出问题。如果没有这个插件打包的话,那么它的目录结构是:

  

  比较这两次打包的区别:在使用spring-boot-maven-plugin插件时,打包后的目录包括三个,BOOT-INF,META-INF,org.springframework.boot.loader,在lib目录里包含了我自己的项目的代码目录;

  在没有使用spring-boot-maven-plugin插件时,打包的目录只有两个,META-INF和我自己的项目代码的目录。

可以指定默认执行类

  如果使用插件,不指定子目录的话,它的默认执行的类是
  Main-Class: org.springframework.boot.loader.JarLauncher  

  如果使用spring-boot-maven-plugin插件还想要自定义执行的类的话,可以用下面三个方法:(前两个未验证,应该没问题)

  1、如果POM继承spring-boot-starter-parent

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.2.RELEASE</version>
  <relativePath/>
</parent>
<properties>
  <!-- The main class to start by executing java -jar -->
  <start-class>com.mycorp.starter.HelloWorldApplication</start-class>
</properties>

2、如果你的POM不是继承spring-boot-starter-parent的话,需要下面的指定。

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <version>1.3.5.RELEASE</version>
   <configuration>
    <mainClass>${start-class}</mainClass>
    <layout>ZIP</layout>
   </configuration>
   <executions>
    <execution>
     <goals>
      <goal>repackage</goal>
     </goals>
    </execution>
   </executions>
  </plugin>

3、POM不是继承spring-boot-starter-paren,并且使用maven-jar-plugin插件来指定执行的类

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
   <archive>
     <manifest>
      <addClasspath>true</addClasspath>
      <useUniqueVersions>false</useUniqueVersions>
      <classpathPrefix>lib/</classpathPrefix>
      <mainClass>cn.com.dataocean.ddts.cli.DDTSCliApplication</mainClass>
     </manifest>
     <manifestEntries>
      <version>${project.version}</version>
      <!--<Class-Path>/home/jiashubing/myfile/ddts/cli/plugins/ddts.core-0.0.1-SNAPSHOT.jar</Class-Path>-->
     </manifestEntries>
   </archive>
  </configuration>
</plugin>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解使用JRebel插件实现SpringBoot应用代码热加载

    前言 在实际的开发过程中,我们经常修改代码之后,手动的重启项目,查看修改效果.那么有没有一种方式能够快速的.自动的帮我们将修改代码自动更新,避免手动重启,从而提高开发效率呢?是有的,在我之前的文章里面给读者介绍了使用springboot-devtools实现热加载的方法.本文就给大家介绍另外一种方式:使用Jrebel插件完成修改代码及资源的自动更新功能. 但是对于这个功能很多人对功能的叫法有争议,笔者查询了维基百科.官方文档,没有得到合理的答案,也没有权威的定义,笔者知道的就有:热启动.热加载.

  • Springboot整合分页插件PageHelper步骤解析

    1.pom引入 <!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>co

  • Mybatis插件扩展及与Spring整合原理分析

    前言 前面几篇文章分析了Mybatis的核心原理,但模块较多,没有一一分析,更多的需要读者自己下来研究.不过Mybatis的插件扩展机制还是非常重要的,像PageHelper就是一个扩展插件,熟悉其扩展原理,才能更好的针对我们的业务作出更合适的扩展.另外,现在Mybatis都是和Spring/SpringBoot一起使用,那么Mybatis又是如何与它们进行整合的呢?一切答案尽在本文之中. 正文 插件扩展 1. Interceptor核心实现原理 熟悉Mybatis配置的都知道,在xml配置中我

  • Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法

    今天为小伙伴们介绍一款 IntelliJ IDEA 上的免费开源插件,叫做 EasyCode,可以方便的根据数据库生成相应的代码. EasyCode 是基于 IntelliJ IDEA 开发的代码生成插件,支持自定义任意模板(Java,html,js,xml):只要是与数据库相关的代码都可以通过自定义模板来生成:支持数据库类型与 java 类型映射关系配置:支持同时生成生成多张表的代码,张表有独立的配置信息,完全的个性化定义,规则由你设置. 我自己也稍微体验了一把,还是蛮方便的. 1.安装 首先

  • spring-boot-maven-plugin 插件的作用详解

    添加了spring-boot-maven-plugin插件后,当运行maven打包的命令,项目会被打包成一个可以直接运行的jar包,使用"java -jar"可以直接运行. 当项目中有两个启动类时,需要制定要执行的类,如果不指定,启动会报错. 指定启动类有两种情况需要区分 一:pom文件继承自spring-boot-starter-parent <properties> <start-class>com.xx.xx</start-class> <

  • Idea使用插件实现逆向工程搭建SpringBoot项目的图文教程

    之前写SpringBoot项目,每次都要手动去写实体类.dao层啥的,尤其是数据库表字段特别多的时候,特别麻烦.然后很多小伙伴都会用逆向工程来自动生成这些类,省去许多没必要的代码量,但是Mybatis的逆向工程依然需要配置,导逆向工程的jar啊,还有编写generatorConfig.xml文件啊(有兴趣的朋友可以看看这篇博客).今天逛gitee的时候,看到了一款可以免去许多配置的idea逆向工程插件,几个步骤简单使用一下 这个插件. 1.下载并安装EasyCode插件 Setting->Plu

  • springBoot 插件工具热部署 Devtools的步骤详解

    第一步添加jar包: <!-- 这个依赖是热部署的(devtools)--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> <

  • SpringBoot 使用Mybatis分页插件实现详解

    这篇文章主要介绍了SpringBoot 使用Mybatis分页插件实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.导入分页插件包和jpa包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </depende

  • Springboot maven plugin插件原理及作用

    要记住:spring-boot-maven-plugin插件在打Jar包时会引入依赖包 可以打成直接运行的Jar包 maven项目的pom.xml中,添加了org.springframework.boot:spring-boot-maven-plugin 插件,当运行"mvn package"进行打包时,会打包成一个可以直接运行的 JAR 文件,使用"Java -jar"命令就可以直接运行. 可以引入依赖包 一般的maven项目的打包命令,不会把依赖的jar包也打包

  • springboot maven 打包插件介绍及注意事项说明

    目录 springboot maven 打包插件介绍及注意事项 1. springboot项目默认生成的可执行jar,为什么不能作为依赖导入其他项目? 2. 有木有办法可以一次性获得可执行jar和依赖jar呢? springboot打包插件详解(spring-boot-maven-plugin) 引入配置 新增后可以看Maven工具栏中有Plugins部分 看一下SpringBoot父工程的pom.xml中打包插件的配置 这个值可以通过设置属性layout来控制 具体layout值对应Main-

  • 解决IDEA中下载free maven plugin插件无效的问题

    在IDEA中导入插件时成功 但是在实体类的方法接口中没有绿色的箭头(我现在是有的) 解决方案一:鼠标右键,选择最后一个Configure Gutter Lcons 查看里面的东西是否已经勾选上,如果已经勾选上还是没有效果请看方案二 解决方案二:请不要心慈手软彻底的删除idea,在安装idea软件,在进行下载free MyBatis plugin插件,应该八九不离十应该有效果了 总结 到此这篇关于解决IDEA中下载free maven plugin插件无效的问题的文章就介绍到这了,更多相关IDEA

  • Springboot 使用maven release插件执行版本管理及打包操作

    目录 MavenRelease 注意事项 开始 Maven Release 当我们的项目达到了当前的目标,在经过检测后不需要改变.这时我们就需要将SNAPSHOT版本打包成RELEASE版本.只有这样,使用这个包的用户才能放心的将这个版本的包放入自己的项目中使用.并且,不会担心这个功能包提供的功能会随时发生改变.maven-release-plugin 可用于构建release版本项目,实现自动打tag.递增版本号.分发release版本jar包至仓库. 注意事项 需要搭配git或svn使用.以

  • Maven生命周期和及插件原理用法详解

    maven周期 maven的生命周期不止package,compile,clean.其实这是主要部分. 以下截图其实展示的是maven的所有周期. maven的生命周期,主要分为3套(其实每个生命周期下面都分为一些阶段,如上截图所示): 1.clean周期:负责清理项目(清理上一次编译的文件). 2.default周期: 主体周期,负责完成项目构建主体过程. 3.site周期:建立站点(生成站点文档,发送站点到服务器). 周期之间是独立的,周期内部的各个阶段是相互依赖的. 例如我执行instal

  • springboot+maven快速构建项目的示例代码

    最近公司运用springboot构建项目,确实比ssh搭建要快很多. 1.首先要下载maven,用maven管理项目很方便,下载完maven配置好环境,maven我就不细说了. 2.创建一个maven项目,pom.xml文件里面写这些: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sche

  • Spring Boot Maven Plugin打包异常解决方案

    [背景]spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没有使用@SpringBootApplication注解),pom.xml如下 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin<

  • springboot集成mybatis-maven插件自动生成pojo的详细教程

    1.生成springboot项目,选择mybatis.mysql(略过) 2.搭建mysql环境,打开服务,记录用户名及密码,新建业务表. 3.在resources文件夹下新建如图所示文件夹: 4.包路径配置(记住自己存放的路径,后面用): 5.在generator中新建文件generatorConfig.properties(统一存放需要的变量).generatorMapper.xml 6.generatorConfig.properties内容如下,(mysql的jdbc.url一定要加时区

  • SpringBoot自定义maven-plugin插件整合asm代码插桩

    目录 背景 项目配置 编译拦截 ASM插桩 项目使用 背景 公司开发框架增加了web系统license授权证书校验模块,实行一台机器一个授权证书,初步方案是增加拦截器针对全局请求进行拦截校验,评估后认为校验方式单一,应该增加重要工具类,业务service实现中每个方法的进行校验,因为涉及代码量较大硬编码工作困难,故选择通过自定义maven插件在编译期间进行动态代码插桩操作 项目配置 新建maven项目设置打包方式 <packaging>maven-plugin</packaging>

  • docker maven plugin快速部署微服务的详细流程

    目录 一.前置条件 二.部署方法 1.开放远程部署端口 3.修改application文件 4.打包上传并创建镜像 5.启动容器 三.总结 一.前置条件 linux下装好docker并启动 1.使用国内 daocloud 一键安装命令 curl -sSL https://get.daocloud.io/docker | sh 2.启动docker systemctl start docker.service 二.部署方法 1.开放远程部署端口 <1>修改 docker 的配置文件 /lib/s

随机推荐