当前位置: 首页 > 编程笔记 >

Springboot maven plugin插件原理及作用

池永长
2023-03-14
本文向大家介绍Springboot maven plugin插件原理及作用,包括了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>

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

 类似资料:
  • 本文向大家介绍Jenkins插件pipeline原理及使用方法解析,包括了Jenkins插件pipeline原理及使用方法解析的使用技巧和注意事项,需要的朋友参考一下 摘要: pipeline字面意思就是流水线,将很多步骤按顺序排列好,做完一个执行下一个。下面简单介绍下如何使用该插件帮我们完成一些流水线型的任务 pipeline字面意思就是流水线,将很多步骤按顺序排列好,做完一个执行下一个。下面简

  • 我知道如何禁用按钮,以防止它被点击两次。然而,如果我想再次启用它,只要它安全,我可以做类似的事情,我调用setenabled(true)在onclick??是一调用setenabled(false)就禁用按钮,还是只在onclick函数完成时禁用?

  • 本文向大家介绍简述 Mybatis 的插件运行原理,以及如何编写一个插件相关面试题,主要包含被问及简述 Mybatis 的插件运行原理,以及如何编写一个插件时的应答技巧和注意事项,需要的朋友参考一下 答:Mybatis 仅可以编写针对 ParameterHandler、ResultSetHandler、StatementHandler、Executor 这 4 种接口的插件,Mybatis 使用

  • Xwindow 使用服务器-客户端架构。无论本地图形界面,还是远程图形界面,都以同样的流程工作。这样便不需要分别进行设计和维护。 本地X客户端 ┐ ┌ 键盘 远程X客户端 ┼ X协议 ─ X服务器 ─ 驱动程序┼ 鼠标 远程X客户端 ┘ └ 显示器 Xserver Xwindow 系统服务器端,通过驱动程序(硬件规范)来管理硬件资源。 例如:当我们移动鼠标时,通过驱动程序[窗口

  • 本文向大家介绍Django路由层URLconf作用及原理解析,包括了Django路由层URLconf作用及原理解析的使用技巧和注意事项,需要的朋友参考一下 一、Django中路由的作用 URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。 你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。

  • 初学 Python 时可能不适应需要手动注释文件编码的写法,根据 PEP 263 所定义, 必须在 Python 文件的前两行,按照下面的写法注明文件的编码: # coding=<encoding name> 或者: # -*- coding: <encoding name> -*- 或者: # vim: set fileencoding=<encoding name> : 如果不定义文件的

  • 本文向大家介绍AJAX工作原理及优缺点详解,包括了AJAX工作原理及优缺点详解的使用技巧和注意事项,需要的朋友参考一下 AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 一、ajax所包含的技术 大家都知道ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技

  • 本文向大家介绍Java操作Zookeeper原理及过程详解,包括了Java操作Zookeeper原理及过程详解的使用技巧和注意事项,需要的朋友参考一下 ZooKeeper 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。 Zookeeper 一个