zoukankan      html  css  js  c++  java
  • [SpringBoot] 流水账~

    1. spring-boot-starter-parent

    你的项目pom.xml文件中,应该存在如下代码:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>
    

    你是否知道这是干啥的?

    这是Spring Boot的父级依赖,这样当前的项目就是Spring Boot项目了。
    spring-boot-starter-parent 是一个特殊的starter,它用来提供相关的Maven默认依赖。使用它之后,常用的包依赖可以省去version标签。

    当我们搭建web应用的时候,可以像下面这样添加spring-boot-starter-web依赖:

    <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>
    </dependencies>
    

    简单的演示下 Spring Boot 项目:

    maven文件看起来是这个样子的:

    <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>springBootLearn</groupId>
        <artifactId>springBootLearn</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.RELEASE</version>
        </parent>
    
       <dependencies>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-web</artifactId>
           </dependency>
       </dependencies>
    </project>
    

    HelloworldController.java

    @RestController
    public class HelloworldController {
        @RequestMapping("/")
        public String say(){
            return "Hello Spring Boot";
        }
    }
    

    Application.java

    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Ch1Application.class, args);
        }
    }
    

    运行main方法,启动项目,然后在浏览器访问http://localhost:8080,就能看到 "Hello Spring Boot"。



    作者:打铁大师
    链接:https://www.jianshu.com/p/54cdfe4e0cac
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
     

    2. SpringBoot Maven plugin

    Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。
    Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。
    Spring Boot Maven plugin的最新版本为2017.6.8发布的1.5.4.RELEASE,要求Java 8, Maven 3.2及以后。

    Spring Boot Maven plugin的5个Goals

    • spring-boot:repackage,默认goal。在mvn package之后,再次打包可执行的jar/war,同时保留mvn package生成的jar/war为.origin
    • spring-boot:run,运行Spring Boot应用
    • spring-boot:start,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
    • spring-boot:stop,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
    • spring-boot:build-info,生成Actuator使用的构建信息文件build-info.properties

    2. 配置pom.xml文件

    复制代码
    复制代码
    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>2.0.1.RELEASE</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    复制代码
    复制代码

    3.mvn package spring-boot:repackage说明

    Spring Boot Maven plugin的最主要goal就是repackage,其在Maven的package生命周期阶段,能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为*.original。

    基于上述配置,对一个生成Jar软件包的项目执行如下命令

    mvn package spring-boot:repackage  

    可以看到生成的两个jar文件,一个是*.jar,另一个是*.jar.original。

     

    在执行上述命令的过程中,Maven首先在package阶段打包生成*.jar文件;然后执行spring-boot:repackage重新打包,查找Manifest文件中配置的Main-Class属性,如下所示:

    复制代码
    复制代码
    Manifest-Version: 1.0  
    Implementation-Title: gs-consuming-rest  
    Implementation-Version: 0.1.0  
    Archiver-Version: Plexus Archiver  
    Built-By: exihaxi  
    Implementation-Vendor-Id: org.springframework  
    Spring-Boot-Version: 1.5.3.RELEASE  
    Implementation-Vendor: Pivotal Software, Inc.  
    Main-Class: org.springframework.boot.loader.JarLauncher  
    Start-Class: com.ericsson.ramltest.MyApplication  
    Spring-Boot-Classes: BOOT-INF/classes/  
    Spring-Boot-Lib: BOOT-INF/lib/  
    Created-By: Apache Maven 3.5.0  
    Build-Jdk: 1.8.0_131  
    复制代码
    复制代码

    注意,其中的Main-Class属性值为org.springframework.boot.loader.JarLauncher;

    Start-Class属性值为com.ericsson.ramltest.MyApplication。

    其中com.ericsson.ramltest.MyApplication类中定义了main()方法,是程序的入口。

    通常,Spring Boot Maven plugin会在打包过程中自动为Manifest文件设置Main-Class属性,事实上该属性究竟作用几何,还可以受Spring Boot Maven plugin的配置属性layout控制的,示例如下

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

    注意,这里的layout属性值为ZIP。

    layout属性的值可以如下:

    • JAR,即通常的可执行jar

    Main-Class: org.springframework.boot.loader.JarLauncher

    • WAR,即通常的可执行war,需要的servlet容器依赖位于WEB-INF/lib-provided

    Main-Class: org.springframework.boot.loader.warLauncher

    • ZIP,即DIR,类似于JAR

    Main-Class: org.springframework.boot.loader.PropertiesLauncher

    • MODULE,将所有的依赖库打包(scope为provided的除外),但是不打包Spring Boot的任何Launcher
    • NONE,将所有的依赖库打包,但是不打包Spring Boot的任何Launcher
  • 相关阅读:
    Java核心技术 卷一 笔记四 库类的直接使用
    Java核心技术 卷一 笔记三 大数值及数组
    Java核心技术 卷一 笔记2 字符串的复制
    Java核心技术 卷一 笔记1
    修改css 样式后, hover事件 不生效
    修改 element ui input 输入框 样式不生效问题
    css3 计算属性
    Vue3 改动系列
    浏览器实现,向下滑动 鼠标滚轮,页面横向移动
    linux ceont0s7 vue 打包压缩图片 一直报错
  • 原文地址:https://www.cnblogs.com/ym65536/p/12832016.html
Copyright © 2011-2022 走看看