Gradle chapter7 Gradle chapter7.Java Quickstart

Java 插件

正如我们所见,Gradle是一个通用构建工具。它可以在你的构建脚本中实行你所关注的构建内容。发散性地说,如果你不在脚本中添加任何代码,那么它不会构建任何东西。

大多数的Java项目与基本过程是十分相似的:你需要编译你的Java源文件,运行一些单元测试,并且创造一些包含你的类的JAR文件。如果你不需要为每个项目都进行编码那将是非常好的。幸运地是,你不需要这样做。Gradle通过使用插件解决了这个问题。一个插件是Gradle的一种延伸,以某种方式安装在你的项目中,代表通过添加一些预安装的任务来完成一些功能。Gradle拥有许多不同插件,你也可以轻易地编写你自己的插件并且分享出来。其中一个插件就是Java Plugin。这个插件在你的项目中添加了一些任务会编译并且单元测试你的Java源代码,并且一起打包进一个JAR文件中。

Java插件是基于约定的。这个意味着插件定义项目许多方面的默认值,例如Java源文件的放置位置。如果你在你的项目中遵循了约定,你一般不需要做太多为了在你的构建脚本中获得有效的构建。Gradle允许你定制你的项目如果你并不想要或者不能够遵循约定。实际上,因为对于Java项目以一个插件的形式进行支持,你并不需要使用插件在所有的Java项目中,如果你并不想要的话。

我们已经深入讨论了许多关于Java插件的例子,依赖管理和多重项目构建。在这个章节中,我们想要给你一个初步的想法关于如何使用一个Java插件去构造一个Java项目。

一个基本的Java项目

来看一个简单的例子。使用Java插件,添加下面的语句在你的构建文件中。

例7.1使用Java插件

build.gradle

apply plugin:’java’

这就是你要在Java 项目中定义的所有内容。这个将会在你的项目中添加Java插件,并且添加一些任务在你的项目中。
Gradle期望可以找到你的生产源代码在src/main/java下,你的测试源代码在src/test/java下。在src/main/resources下的所有文件都会作为资源文件打包进JAR文件中,任何在src/test/resources下的文件都会被包含进类路径在你的构建目录中,并且和JAR·文件一起保存在build/lib文件下。

构建项目

Java插件在你的项目中添加了一些任务。然而还有一些必须手动添加的任务你会需要在项目中使用到。最普遍使用到的任务就是build任务,它会构建整个项目。当你运行gradle build 命令时,G绕到了会编译并且测试你的代码,并且创建一个JAR文件包含你的主类和资源文件:

例7.2 构建一个Java项目
gradle build输出

gradle build
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build

BUILD SUCCESSFUL

Total time: 1 secs

其他有用的任务:

clean

删除所有的构建目录,移除所有的构建文件。

assemble

编译并且打包你的代码,但是不执行单元测试。其他的插件添加了更多地特性、例如,如果你使用了WAR插件,这个插件会构造WAR 文件在你的项目中。

check

编译并且测试你的代码,其他的插件添加了更多的check在你的任务中。例如,如果你使用checkstyle插件,这个插件同样会运行CheckStyle在你的资源代码中。

额外的依赖

通常,一个Java项目会拥有一些依赖在额外的JAR文件中。为了在项目中关联这些JAR文件,你需要告诉Gradle哪里可以找到他们。在Gradle中,工件例如JAR文件,位于库之中。一个库可以被用来读取项目所需要的依赖,或者发布一个依赖、例如,我们会使用公共的maven库。

例7.3 添加Maven库
build.gradle

repositories{
mavenCentral()
}

来添加一些依赖吧!在这里,我们将宣布我们的生产类有一个编译时依赖commons集合,,我们的测试类有一个编译时依赖于junit。

例7.4 添加依赖
build.gradle

dependecies{
compile group: ‘commons-collections’,name: ‘commons-collections’,verison: ‘3.2’
testCompile group:’junit’,name:’junit’,version:’4.+’
}

在chapter8,基本依赖管理中你可以找到更多的内容。

定制项目

Java插件添加了一些属性在你的项目中。这些属性有默认值在开始的时候是足够的。如果他们不合适的话改变是很容易的。看下我们的例子。我们会确定项目的版本号,约束Java版本号。我们同样添加一些特性在JAR manifest中。

例7.5 制定MANIFEST.MF
build.gradle

sourceCompatibility = 1.5
version = ‘1.0’
jar {
manifest {
attributes ‘Implementation-Title’:’Gradle Quickstart’,
‘Implementation-version’:verison
}
}

Java插件添加的是常规任务,和他们在构建文件中声明的完全相同。这个意味着你可以使用前面章节的任何机制来定制这些任务。例如,你可以给任务设置属性,添加习惯,改变依赖或者替换一个任务。在我们的例子中,我们会

配置这些测试任务,以便于在test任务背执行时添加一些属性。

哪些属性是可用的?
你可以使用gradle.properties文件去列举项目中的所有属性。这个将会去允许你查看Java插件添加的默认值和属性。

例7.6 添加一个test系统属性
build.gradle

test{
systemProperties ‘property’:’value’
}

发布JAR文件

通常JAR文件需要被发布到某个地方。为了完成这个功能,你需要告诉Gradle这个JAR文件发布到哪个地方。在Gradle中,类似这样的JAR文件需要被发布到仓库中。在我们的例子中,我们会发布到本地目录下。你同样可以发布到一个远程仓库或者多重位置。

例7.7 发布JAR文件

uploadArchives {
repositories {
dirs ‘repos’
}
}

发布JAR文件,使用命令gradle uploadArchives.

* 创建一个Eclipse项目*

build.gradle

apply plugin: ‘eclipse’

使用gradle eclipse命令去创建Eclipse 项目文件。

总结

下面是我们完整的构建文件

例7.9 Java例子——完整的构建文件

build.gradle

apply plugin:’java’
apply plugin:’eclipse’

sourceCompatibility = 1.5
version = ‘1.0’
jar {
manifest {
attributes ‘Implements-Title’:’Gradle Quickstart’,’Implentation-Version’:version
}
}

repositories{
mavenCentral()
}

dependencies{
compile group: ‘commons-collections’,name:’commons-collections’,version:’3.2’
testCompile group:’junit’,name:’junit’,version:’4.+’
}

test{
systemProperties ‘property’:’value’
}

uploadArchives {
repositories{
flatDir{
dir ‘repos’
}
}
}

JAVA多项目构建

现在来看一个典型的多项目构建。
例7.10. 多项目构建——分层布局

Build layout

multiproject/
api/
services/webservice/
shared/
services/shared

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值