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

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

作者: icameisaw | 来源:发表于2018-10-13 23:20 被阅读35次

    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 就可用了。

    • spring-boot:exejar
    • spring-boot:findmainclass

    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

    • 更多构建工具的工作原理可参看其源代码
    • 更多细节内容可参看文档的附录
    • 构建相关的问题也可参看 How-to guides

    相关文章

      网友评论

          本文标题:Spring Boot 官网文档简单翻译 Part VIII

          本文链接:https://www.haomeiwen.com/subject/ytnnaftx.html