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
  • 相关阅读:
    android中BuildConfig.DEBUG的使用
    Http 状态码完整说明
    Java 线程池
    Gson简要使用笔记
    Android Loader详解四:回调及完整例子
    Android Loader详解三:重启与回调
    Android Loader详解二:使用加载器
    Android Loader详解一:概述
    Metrics介绍和Spring的集成(转)
    Web.xml配置详解之context-param(转)
  • 原文地址:https://www.cnblogs.com/ym65536/p/12832016.html
Copyright © 2011-2022 走看看