Spring Boot 官网文档简单翻译 Part VIII

2018-10-13  本文已影响35人  icameisaw

Part VIII. Build tool plugins

文档说明:

  • 文档对应的版本为 2.1.0.M3
  • 这不是文档的完整中文翻译,也有可能跟原文文字不一一对应,只是我阅读文档时候做的简单笔记
  • 如果对应的章节没有任何中文,有可能是文档内容比较少,建议直接看原文,或者是我不感兴趣的部分
  • 目录标题没有做翻译,首先标题一般一眼就能看懂什么意思,不做翻译还能保证原文意思,其次也方便对应到原文位置

70. Spring Boot Maven Plugin

Maven 版本要求 3.2 或者以上
Note: Spring Boot Maven Plugin Site

70.1 Including the Plugin

在 pom.xml 引入依赖:

<?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>2.1.0.M3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

70.2 Packaging Executable Jar and War Files

指定需要打包的格式:

<?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>

如果没有配置 Main-Class 属性,插件会查找 Main 方法:

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

71. Spring Boot Gradle Plugin

Gradle 版本要求 4.4 或者以上

文档没有给出太多的描述,提供了下面的文档链接:

72. Spring Boot AntLib Module

Spring Boot AntLib 给 Apache Ant 提供了基本的 Spring Boot 支持,需要在 build.xml 添加 spring-boot 的命名空间。

<project xmlns:ivy="antlib:org.apache.ivy.ant"
    xmlns:spring-boot="antlib:org.springframework.boot.ant"
    name="myapp" default="build">
    ...
</project>

启动 Ant 需要加上 -lib 参数:

$ ant -lib <folder containing spring-boot-antlib-2.1.0.M3.jar>

72.1 Spring Boot Ant Tasks

添加 spring-boot-antlib 后,下面的两个 task 就可用了。

72.1.1 spring-boot:exejar

exejar task 可用的属性列表

72.1.2 Examples

Specify start-class:

<spring-boot:exejar destfile="target/my-application.jar"
    classes="target/classes" start-class="com.example.MyApplication">
    <resources>
        <fileset dir="src/main/resources" />
    </resources>
    <lib>
        <fileset dir="lib" />
    </lib>
</spring-boot:exejar>

Detect start-class:

<exejar destfile="target/my-application.jar" classes="target/classes">
    <lib>
        <fileset dir="lib" />
    </lib>
</exejar>

72.2 spring-boot:findmainclass

findmainclass task 可用的属性列表

Examples

Find and log.

<findmainclass classesroot="target/classes" />

Find and set.

<findmainclass classesroot="target/classes" property="main-class" />

Override and set.

<findmainclass mainclass="com.example.MainClass" property="main-class" />

73. Supporting Other Build Systems

如果你想使用 Maven、Gradle、Ant 以外的构建工具,你很有可能得开发自己的插件。可执行的 jar 文件有一定的格式要求,详情可参看文档的附录。
Spring Boot 的 Maven 和 Gradle 插件都有使用到 spring-boot-loader-tools,也许你也应该直接使用它。

73.1 Repackaging Archives

org.springframework.boot.loader.tools.Repackager

73.2 Nested Libraries

org.springframework.boot.loader.tools.Libraries

73.3 Finding a Main Class

通过 ASM 读取 class 文件信息来查找 Main Class。

73.4 Example Repackage Implementation

Repackager repackager = new Repackager(sourceJarFile);
repackager.setBackupSource(false);
repackager.repackage(new Libraries() {
    @Override
    public void doWithLibraries(LibraryCallback callback) throws IOException {
        // Build system specific implementation, callback for each dependency
        // callback.library(new Library(nestedFile, LibraryScope.COMPILE));
    }
});

74. What to Read Next

上一篇下一篇

猜你喜欢

热点阅读