飛舞的spring boot2(51)——Spring Boot Maven插件

構建工具插件

Spring Boot爲Maven和Gradle提供構建工具插件,該插件提供各類各樣的特性,包括打包可執行jars。本章節提供關於插件的更多詳情及用於擴展一個不支持的構建系統所需的幫助信息。java

Spring Boot Maven插件

Spring Boot Maven插件爲Maven提供Spring Boot支持,它容許你打包可執行jar或war存檔,而後就地運行應用。爲了使用它,你須要使用Maven 3.2(或更高版本)。web

注 參考Spring Boot Maven Plugin Site能夠獲取所有的插件文檔。spring

包含該插件

想要使用Spring Boot Maven插件只需簡單地在你的pom.xml的plugins部分包含相應的XML:apache

<?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>
    <!-- ... -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.4.1.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

該配置會在Maven生命週期的package階段從新打包一個jar或war。下面的示例展現在target目錄下既有從新打包後的jar,也有原始的jar:tomcat

$ mvn package
$ ls target/*.jar
target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original

若是不包含像上面那樣的<execution/>,你能夠本身運行該插件(但只有在package目標也被使用的狀況),例如:微信

$ mvn package spring-boot:repackage
$ ls target/*.jar
target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original

若是使用一個里程碑或快照版本,你還須要添加正確的pluginRepository元素:maven

<pluginRepositories>
    <pluginRepository>
        <id>spring-snapshots</id>
        <url>http://repo.spring.io/snapshot</url>
    </pluginRepository>
    <pluginRepository>
        <id>spring-milestones</id>
        <url>http://repo.spring.io/milestone</url>
    </pluginRepository>
</pluginRepositories>

打包可執行jar和war文件

一旦spring-boot-maven-plugin被包含到你的pom.xml中,Spring Boot就會自動嘗試使用spring-boot:repackage目標重寫存檔以使它們可以執行。爲了構建一個jar或war,你應該使用常規的packaging元素配置你的項目:ide

<?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">
    <!-- ... -->
    <packaging>jar</packaging>
    <!-- ... -->
</project>

生成的存檔在package階段會被Spring Boot加強。你想啓動的main類便可以經過指定一個配置選項,也能夠經過爲manifest添加一個Main-Class屬性這種常規的方式實現。若是你沒有指定一個main類,該插件會搜索帶有public static void main(String[] args)方法的類。spring-boot

爲了構建和運行一個項目的artifact,你能夠輸入如下命令:工具

$ mvn package
$ java -jar target/mymodule-0.0.1-SNAPSHOT.jar

爲了構建一個便可執行,又能部署到外部容器的war文件,你須要標記內嵌容器依賴爲"provided",例如:

<?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">
    <!-- ... -->
    <packaging>war</packaging>
    <!-- ... -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- ... -->
    </dependencies>
</project>

注 具體參考「Section 81.1, 「Create a deployable war file」」 章節。

高級配置選項和示例可在插件信息頁面獲取。


本文分享自微信公衆號 - soft張三丰(aguzhangsanfeng)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索