Gradle 构建 Java 项目
-
构建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
SourceSet可用于指定其他项目结构。例如,源存储在src文件夹中,而不是src/main/java中。看一下以下目录结构。apply plugin: 'java' sourceSets { main { java { srcDir 'src' } } test { java { srcDir 'test' } } }
-
初始化任务执行
Gradle尚不支持多个项目模板。但是它提供了一个初始化任务来创建新的Gradle项目的结构。如果没有其他参数,此任务将创建一个Gradle项目,其中包含gradle包装器文件,build.gradle和settings.gradle文件。 当添加带有Java库作为值的--type参数时,将创建一个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' }
在存储库部分,它定义了在哪里找到依赖项。Jcenter用于解决您的依赖关系。依赖项部分用于提供有关外部依赖项的信息。 -
指定Java版本
通常,Java项目具有一个版本和一个在其上编译的目标JRE。该版本和sourceCompatibility属性可以在build.gradle文件设定。version = 0.1.0 sourceCompatibility = 1.8
如果工件是可执行的Java应用程序,则MANIFEST.MF文件必须使用main方法知道该类。apply plugin: 'java' jar { manifest { attributes 'Main-Class': 'com.example.main.Application' } }
-
示例
创建一个目录结构,如下面所示。└─src ├─main │ └─java │ └─com │ └─bank ├─resources └─test └─java └─com └─bank
将以下给定的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代码复制到AppTest.java文件中,并存储到Consumerbanking\src\test\java\com\bank目录中。package com.bank; /** * Hello world! * */ public class AppTest{ 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