本指南将引导您使用Gradle构建一个简单的Java项目。
您将创建一个简单的应用程序,然后使用Gradle构建它。
大约15分钟
最喜欢的文本编辑器或IDE
JDK 6或以后
像大多数Spring入门指南,您可以从头开始并完成每个步骤,也可以绕过您已经熟悉的基本设置步骤。无论哪种方式,你最终都会得到工作代码。
到创建项目,继续前进设置项目.
到跳过基础,做以下工作:
下载并解压缩本指南的源存储库,或使用吉特: git clone https://github.com/spring-guides/gs-gradle.git
CD成gs-gradle/initial
跳到安装分级.
当你完成中的代码检查结果。gs-gradle/complete
.
首先,您为Gradle设置了一个要构建的Java项目。为了保持对Gradle的关注,使项目目前尽可能简单。
在您选择的项目目录中,创建以下子目录结构;例如,使用mkdir -p src/main/java/hello
关于*nix系统:
└── src └── main └── java └── hello
在src/main/java/hello
目录中,您可以创建任意Java类。为了简单起见并与本指南的其余部分保持一致,Spring建议您创建两个类:HelloWorld.java
和Greeter.java
.
src/main/java/hello/HelloWorld.java
package hello;
public class HelloWorld {
public static void main(String[] args) {
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}
src/main/java/hello/Greeter.java
package hello;
public class Greeter {
public String sayHello() {
return "Hello world!";
}
}
现在您可以使用Gradle构建一个项目了,您可以安装Gradle了。
强烈建议使用安装程序:
SDKMAN
自制(BREW安装级)
最后,如果这些工具都不适合您的需要,您可以从http://www.gradle.org/downloads。只有二进制文件是必需的,所以请查找到Gradle的链接-版本-bin.zip(你也可以选择Gradle-版本-all.zip,以获取源代码和文档以及二进制文件。)
将文件解压缩到计算机,并将bin文件夹添加到路径中。
要测试Gradle安装,请从命令行运行Gradle:
gradle
如果一切顺利,你会看到一个欢迎的信息:
:help Welcome to Gradle 2.3. To run a build, run gradle... To see a list of available tasks, run gradle tasks To see a list of command-line options, run gradle --help BUILD SUCCESSFUL Total time: 2.675 secs
现在安装了Gradle。
现在已经安装了Gradle,看看它能做什么。在为项目创建build.gradle文件之前,您可以问它哪些任务是可用的:
gradle tasks
您应该会看到可用任务的列表。假设您在一个文件夹中运行Gradle,而该文件夹中还没有build.gradle文件,您将看到一些非常基本的任务,如以下所示:
:tasks == All tasks runnable from root project == Build Setup tasks setupBuild - Initializes a new Gradle build. [incubating] == Help tasks dependencies - Displays all dependencies declared in root project 'gs-gradle'. dependencyInsight - Displays the insight into a specific dependency in root project 'gs-gradle'. help - Displays a help message projects - Displays the sub-projects of root project 'gs-gradle'. properties - Displays the properties of root project 'gs-gradle'. tasks - Displays the tasks runnable from root project 'gs-gradle'. To see all tasks and more detail, run with --all. BUILD SUCCESSFUL Total time: 3.077 secs
即使这些任务是可用的,但如果没有项目构建配置,它们也不会提供太多的价值。当你把build.gradle
文件中,一些任务将更有用。当您将插件添加到build.gradle
,所以你偶尔会想要跑任务再次查看哪些任务可用。
说到添加插件,接下来您将添加一个支持基本Java构建功能的插件。
从简单开始,创建一个非常基本的build.gradle
在本指南开头创建的中的文件。只给它一句:
apply plugin: 'java'
构建配置中的这一行带来了大量的能量。跑分级任务再次,您将看到添加到列表中的新任务,包括构建项目、创建JavaDoc和运行测试的任务。
您将使用级建任务频繁。此任务编译、测试并将代码组装到JAR文件中。你可以这样运行:
gradle build
几秒钟后,“生成成功”表示生成已经完成。
要查看构建工作的结果,请查看建房文件夹。在其中您可以找到几个目录,包括以下三个值得注意的文件夹:
班。该项目已编译.class文件。
报告。生成的报告(如测试报告)。
利布斯。组装的项目库(通常是JAR和/或WAR文件)。
The classes folder has .class files that are generated from compiling the Java code. Specifically, you should find HelloWorld.class and Greeter.class.
此时,该项目没有任何库依赖项,因此依赖缓存文件夹。
Reports文件夹应该包含在项目上运行单元测试的报告。因为该项目还没有任何单元测试,所以该报告将是无趣的。
libs文件夹应该包含一个以项目文件夹命名的JAR文件。接下来,您将看到如何指定JAR及其版本的名称。
简单的HelloWorld示例是完全独立的,不依赖于任何其他库。然而,大多数应用程序依赖外部库来处理公共和/或复杂功能。
例如,假设除了说“HelloWorld!”之外,您还希望应用程序打印当前的日期和时间。您可以在本机Java库中使用日期和时间工具,但是使用Joda时间库可以使事情变得更有趣。
首先,将HelloWorld d.java改为如下所示:
package hello;
import org.joda.time.LocalTime;
public class HelloWorld {
public static void main(String[] args) {
LocalTime currentTime = new LocalTime();
System.out.println("The current local time is: " + currentTime);
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}
这里HelloWorld
使用Joda Time的LocalTime
类获取和打印当前时间。
如果你跑了gradle build
要立即构建项目,构建将失败,因为您尚未将Joda Time声明为构建中的编译依赖项。
首先,您需要为第三方库添加一个源代码。
repositories {
mavenCentral()
}
这,这个,那,那个repositories
块表示构建应该从Maven中央存储库解析其依赖关系。Gradle非常依赖由Maven构建工具建立的许多约定和工具,包括使用Maven Central作为库依赖源的选项。
现在我们已经为第三方库做好了准备,让我们声明一些。
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile "joda-time:joda-time:2.2"
testCompile "junit:junit:4.12"
}
带着dependencies
块,则声明Joda Time的单个依赖项。具体来说,您要求在joda-time组中(从右向左阅读)joda-time库的2.2版本。
关于这种依赖的另一点需要注意的是,它是一个compile
依赖项,指示它应该在编译时可用(如果您正在构建WAR文件,则包含在WAR的/Web-INF/libs文件夹中)。其他值得注意的依赖类型包括:
providedCompile
。编译项目代码所需的依赖项,但这将由运行代码的容器(例如JavaServletAPI)在运行时提供。
testCompile
。用于编译和运行测试的依赖项,但构建或运行项目运行时代码不需要依赖项。
最后,让我们指定JAR工件的名称。
jar {
baseName = 'gs-gradle'
version = '0.1.0'
}
这,这个,那,那个jar
块指定如何命名JAR文件。在这种情况下,它将呈现gs-gradle-0.1.0.jar
.
现在如果你跑gradle build
,Gradle应该解决Maven Central存储库中的Joda时间依赖关系,构建就会成功。
Gradle包装器是启动Gradle构建的首选方法。它由一个用于Windows的批处理脚本和一个用于OSX和Linux的shell脚本组成。这些脚本允许您运行Gradle构建,而无需在系统上安装Gradle。这曾经是添加到您的构建文件,但它已经折叠到Gradle,所以不再有任何需要。相反,只需使用以下命令。
$ gradle wrapper --gradle-version 2.13
完成此任务后,您将注意到一些新文件。这两个脚本位于文件夹的根目录中,而包装器JAR和属性文件已添加到新的gradle/wrapper
文件夹。
└──└── gradlew └── gradlew.bat └── gradle └── wrapper └── gradle-wrapper.jar └── gradle-wrapper.properties
现在,Gradle包装器可用于构建您的项目。将其添加到您的版本控制系统中,每个复制您的项目的人都可以同样地构建它。它可以与已安装的Gradle版本完全相同的方式使用。运行包装器脚本来执行构建任务,就像以前一样:
./gradlew build
第一次为特定版本的Gradle运行包装时,它会下载并缓存该版本的Gradle二进制文件。Gradle包装文件被设计成提交到源代码管理中,这样任何人都可以构建项目,而不必首先安装和配置Gradle的特定版本。
在这个阶段,您将构建您的代码。您可以在这里看到结果:
build ├── classes │ └── main │ └── hello │ ├── Greeter.class │ └── HelloWorld.class ├── dependency-cache ├── libs │ └── gs-gradle-0.1.0.jar └── tmp └── jar └── MANIFEST.MF
包括两个预期的类文件Greeter
和HelloWorld
,以及一个JAR文件。快速浏览一下:
$ jar tvf build/libs/gs-gradle-0.1.0.jar 0 Fri May 30 16:02:32 CDT 2014 META-INF/ 25 Fri May 30 16:02:32 CDT 2014 META-INF/MANIFEST.MF 0 Fri May 30 16:02:32 CDT 2014 hello/ 369 Fri May 30 16:02:32 CDT 2014 hello/Greeter.class 988 Fri May 30 16:02:32 CDT 2014 hello/HelloWorld.class
类文件被打包。需要注意的是,尽管您将joda-time声明为依赖项,但是这里没有包含这个库。JAR文件也不能运行。
要使这段代码可运行,我们可以使用Gradle的application
插件。把这个添加到你的build.gradle
档案。
apply plugin: 'application' mainClassName = 'hello.HelloWorld'
然后你就可以运行这个应用程序了!
$ ./gradlew run :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :run The current local time is: 16:16:20.544 Hello world! BUILD SUCCESSFUL Total time: 3.798 secs
要捆绑依赖关系,需要更多的思考。例如,如果我们构建一个WAR文件,这是一种通常与第三方依赖项中的打包相关的格式,我们可以使用Gradle的战争插件。如果您正在使用SpringBoot,并且想要一个可运行的JAR文件,则弹簧引导级插件很方便。在这个阶段,Gradle对您的系统还不太了解,无法做出选择。但就目前而言,这应该足以开始使用Gradle了。
要完成本指南的内容,以下是已完成的build.gradle
档案:
build.gradle
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'
mainClassName = 'hello.HelloWorld'
// tag::repositories[]
repositories {
mavenCentral()
}
// end::repositories[]
// tag::jar[]
jar {
baseName = 'gs-gradle'
version = '0.1.0'
}
// end::jar[]
// tag::dependencies[]
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile "joda-time:joda-time:2.2"
testCompile "junit:junit:4.12"
}
// end::dependencies[]
// tag::wrapper[]
// end::wrapper[]
这里嵌入了许多开始/结束注释。这样就可以将构建文件的一些部分提取到本指南中,以获得上面的详细说明。在生产构建文件中不需要它们。 |
祝贺你!现在,您已经为构建Java项目创建了一个简单而有效的Gradle构建文件。
下列指南也可能有帮助:
使用Maven构建Java项目
翻译自Spring官方:https://spring.io/guides/gs/gradle/