Gradle - 构建Java项目
本章介绍如何使用 Gradle 构建文件构建 Java 项目。
首先,我们必须在构建脚本中添加 Java 插件,因为它提供了编译 Java 源代码、运行单元测试、创建 Javadoc 和创建 JAR 文件的任务。
在 **build.gradle** 文件中使用以下行。
apply plugin: 'java'
Java 默认项目布局
每当你向构建中添加插件时,它都会假设你的 Java 项目的某些设置(类似于 Maven)。请查看以下目录结构。
- src/main/java 包含 Java 源代码。
- src/test/java 包含 Java 测试。
如果你遵循此设置,则以下构建文件足以编译、测试和捆绑 Java 项目。
要开始构建,请在命令行中键入以下命令。
C:\> gradle build
**SourceSets** 可用于指定不同的项目结构。例如,源代码存储在 **src** 文件夹中,而不是 **src/main/java** 中。请查看以下目录结构。
apply plugin: 'java' sourceSets { main { java { srcDir 'src' } } test { java { srcDir 'test' } } }
init 任务执行
Gradle 还不支持多个项目模板。但它提供了一个 **init** 任务来创建新的 Gradle 项目的结构。在没有额外参数的情况下,此任务会创建一个 Gradle 项目,其中包含 Gradle 包装器文件、**build.gradle** 和 **settings.gradle** 文件。
当使用 **--type** 参数并将 **java-library** 作为值添加时,将创建一个 Java 项目结构,并且 **build.gradle** 文件包含一个带有 Junit 的特定 Java 模板。请查看 **build.gradle** 文件的以下代码。
apply plugin: 'java' repositories { jcenter() } dependencies { compile 'org.slf4j:slf4j-api:1.7.12' testCompile 'junit:junit:4.12' }
在 repositories 部分,它定义了在哪里查找依赖项。Jcenter 用于解析你的依赖项。Dependencies 部分用于提供有关外部依赖项的信息。
指定 Java 版本
通常,Java 项目具有一个版本和一个编译的目标 JRE。可以在 **build.gradle** 文件中设置 **version** 和 **sourceCompatibility** 属性。
version = 0.1.0 sourceCompatibility = 1.8
如果工件是可执行的 Java 应用程序,则 **MANIFEST.MF** 文件必须知道包含 main 方法的类。
apply plugin: 'java' jar { manifest { attributes 'Main-Class': 'com.example.main.Application' } }
示例
创建如下所示的目录结构。
将下面给出的 Java 代码复制到 App.java 文件中,并存储到 **consumerbanking\src\main\java\com\bank** 目录中。
package com.bank; /** * Hello world! * */ public class App { public static void main( String[] args ){ System.out.println( "Hello World!" ); } }
将下面给出的 Java 代码复制到 AppTset.java 文件中,并存储到 **consumerbanking\src\test\java\com\bank** 目录中。
package com.bank; /** * Hello world! * */ public class App{ public static void main( String[] args ){ System.out.println( "Hello World!" ); } }
将下面给出的代码复制到 build.gradle 文件中,并放置到 **consumerbanking\** 目录中。
apply plugin: 'java' repositories { jcenter() } dependencies { compile 'org.slf4j:slf4j-api:1.7.12' testCompile 'junit:junit:4.12' } jar { manifest { attributes 'Main-Class': 'com.example.main.Application' } }
要编译并执行上述脚本,请使用以下命令。
consumerbanking\> gradle tasks consumerbanking\> gradle assemble consumerbanking\> gradle build
检查各个目录中的所有类文件,并检查 **consumerbanking\build\lib** 文件夹中的 **consumerbanking.jar** 文件。