gradle 指南之构建Java库

构建Java库

本指南引导您完成使用Gradle的Build Init插件生成适合其他JVM库和应用程序使用的JVM库的过程。

你会建立什么

您将使用标准布局生成Java库。

你需要什么

  • 大约11分钟
  • 文本编辑器或IDE
  • 一个Java开发工具包(JDK),版本1.7或更高
  • 一个Gradle,版本4.7或更高

创建一个库项目

Gradle带有一个名为Build Init插件的内置插件。它在Gradle用户手册中有记录。该插件有一个叫做的任务init,用于生成项目。该init任务调用(也是内置的)wrapper任务来创建一个Gradle包装脚本,gradlew。

第一步是为新项目创建一个文件夹并将目录切换到其中。

$ mkdir building-java-libraries
$ cd building-java-libraries

运行init任务

从新项目目录中,init使用java-library参数运行任务。

$ gradle init --type java-library
>任务:包装
>任务:初始化

4s制造成功
2个可执行的任务:2个执行

该init任务运行的wrapper任务首先,其产生gradlew和gradlew.bat包装脚本。然后它创建具有以下结构的新项目:

。
├──build.gradle
├──gradle
│└──wrapper       1⃣️
│├──gradle-wrapper.jar
│└──gradle-wrapper.properties
├──gradlew
├──gradlew.bat
├──settings.gradle
└──src
    ├──main
    │└──java     2⃣️
    │└──Library.java
    └──test
        └──java    3⃣️
            └──LibraryTest.java
  1. 为包装文件生成文件夹
  2. 默认的Java源文件夹
  3. 默认的Java测试文件夹

您现在拥有一个简单的Java库项目所需的组件。

查看生成的项目文件

settings.gradle文件受到严重评论,但只有一条活动行:
生成的设置

rootProject.name='building-java-libraries'  1⃣️
  1. 这将分配根项目的名称。

生成的build.gradle文件也有很多评论。这里重现活动部分(注意依赖关系的版本号可能会在更新版本的Gradle中更新):

plugins {
    id 'java-library'
}

dependencies {
    api 'org.apache.commons:commons-math3:3.6.1'   2⃣️

    implementation 'com.google.guava:guava:23.0'   3⃣️

    testImplementation 'junit:junit:4.12'    4⃣️
}

repositories {
    jcenter()   1⃣️
}
version = '0.1.0'

jar {
    manifest {
        attributes('Implementation-Title': project.name,
                   'Implementation-Version': project.version)
    }
}
  1. 公共Bintray Artifactory存储库
  2. 这是一个导出到消费者的依赖项的例子,也就是说在他们的编译类路径中找到。
  3. 这是一个内部使用的依赖关系的实例,并且不会在自己的编译类路径中向消费者公开。
  4. JUnit测试库

该build.gradle添加的Java库插件。这是该java-base插件的扩展,并添加了编译Java源代码的其他任务。

该文件src/main/java/Library.java显示在这里:

public class Library {
    public boolean someLibraryMethod() {
        return true;
    }
}

下面显示了生成的JUnit规范src/test/java/LibraryTest.java:

import org.junit.Test;

public class LibraryTest {
    @Test public void testSomeLibraryMethod() {
        Library classUnderTest = new Library();
        assertTrue("someLibraryMethod should return 'true'", classUnderTest.someLibraryMethod());
    }
}

生成的测试类只有一个JUnit 4测试。测试实例化Library类,调用someLibraryMethod方法并检查返回的值是否为true。

组装库JAR

要构建该项目,请运行该build任务。你可以使用普通的gradle命令,但是当一个项目包含一个包装脚本时,可以使用它来代替它。

$ ./gradlew构建
>任务:compileJava
>任务:processResources NO-SOURCE
>任务:类
>任务:jar
>任务:组装
>任务:compileTestJava
>任务:processTestResources NO-SOURCE
>任务:testClasses

>任务:测试
拿起_JAVA_OPTIONS:-Xmx2048m -Xms512m

>任务:检查
>任务:构建

8s成功制造
4个可执行任务:4个执行

第一次运行包装脚本时gradlew,可能会有一个延迟,而该版本的gradle下载和本地存储在您的
~/.gradle/wrapper/dists 文件夹中。

第一次运行构建时,Gradle将检查您的~/.gradle目录下是否已在缓存中拥有JUnit库和其他列出的依赖项。如果没有,库将被下载并存储在那里。下一次运行构建时,将使用缓存版本。该build任务编译类,运行测试并生成测试报告。
您可以通过打开位于的HTML输出文件来查看测试报告 build/reports/tests/test/index.html。

自定义库JAR

添加API文档

概要