原文地址 http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html
7.1. The Java plugin插件
我们已经看到Gradle是一个通用构建工具,它可以完成相当多的任务,只要你能在脚本里定义好。如果你没写好脚本,它就啥也干不成。
大部分Java项目都是这样的流程:编译源文件,单元测试,打成jar包。你希望不用每次都为每个项目搞下这个。你的小清新到了:Gradle通过插件解决了这个问题。一个插件就是一个Gradle扩展,它以某种方式配置项目。一般会预配置一些任务来一起完成某个目标。Gradle 自带了不少插件,你还可以自己写,并分享给别人。其中的Java插件( Java plugin)可以实现编译测试打包任务。这个插件是基于约定的,它定义了工程的很多默认值,比如源文件位置等。如果就照着它的约定,你就不用怎么改构建脚本了。如果不想或者不能,你可以自己写。实际上,既然对Java项目的支持是一个插件实现的,你完全可以不用插件来构建。
后面我会通过很多例子来讲Java插件的依赖管理和多工程构建等。不过首先我们要看到的是怎么使用Java插件。
要使用Java插件,在脚本里写一句这个(是不是有点像play!框架的插件配置):
Example 7.1. Using the Java plugin
build.gradle
apply plugin: 'java'
Note: The code for this example can be found at samples/java/quickstart
which is in both the binary and source distributions of Gradle.
这样就增加了Java插件功能,也就配好了一些任务。Gradle默认希望你的源代码在 src/main/java
而测试源代码在src/test/java
,资源目录是src/main/resources,测试资源是src/test/resources
。输出目录是build
文件夹。需要的jar文件在build/libs下面。
What tasks are available?
gradle tasks
命令可以列出当前工程的全部任务。你可以看看到底Java插件增加了什么任务。
Java插件会增加一些默认任务,不过你应该不会全都需要。一般需要的任务是 build
, 它会完整构建你的项目。运行 gradle build
就行
:
Example 7.2. Building a Java project
Output of gradle build
> gradle build :compileJava :processResources :classes :jar :assemble :compileTestJava :processTestResources :testClasses :test :check :build BUILD SUCCESSFUL Total time: 1 secs
其他的任务比如:
删除 build
目录和所有构建文件。
编译和打包,不进行单元测试。结合其他插件可以实现额外功能。比如加入War插件后这个任务还回生成war包。
编译和测试,也可以结合其他插件,比如Code-quality插件会额外执行Checkstyle
要引用外部jar包,就要告诉Gradle它们的位置。Gradle的引用在repository 属性下。比如要引用Maven库的包::
Let's add some dependencies. 咱们加一些依赖试试,比如我们的发行版有一个commons collections运行时依赖,测试类则依赖的是 junit:
Java插件增加了一些属性,要修改Java插件属性的默认值也很简单,看一个例子。比如我们要指定版本号,并增加一些manifest属性。
Example 7.5. Customization of MANIFEST.MF
build.gradle
sourceCompatibility = 1.5 version = '1.0' jar { manifest { attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version } }
What properties are available?
gradle properties
命令可以列出工程的属性,可以看到Java插件到底增加了什么属性,它们的值是多少。
Java插件增加的都是普通任务,和构建脚本里的一样。所以前面学到的那些机制可以随便用。,比如设置属性值,增加任务行为,修改任务依赖,甚至取代任务。我们配置一个 test
任务,它是Test
类型的,让它执行时增加系统属性:
一般jar需要发布到一个地方,所以你要告诉Gradle发布到哪。默认是发布到库里面。我们让它发布到本地目录,你愿意的话可以发布到远程或者同时多个地方。
Example 7.7. Publishing the JAR file
build.gradle
uploadArchives { repositories { flatDir { dirs 'repos' } } }
要发布jar包,执行 gradle uploadArchives
.
要导入到Eclipse里面需要另一个插件:
现在执行 gradle eclipse
可以生成Eclipse项目文件。更多Eclipse任务操纵见 Chapter 38, The Eclipse Plugin.
这是完整的构建文件:
Example 7.9. Java example - complete build file
build.gradle
apply plugin: 'java' apply plugin: 'eclipse' sourceCompatibility = 1.5 version = '1.0' jar { manifest { attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-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 { dirs 'repos' } } }
现在来看多工程构建。下面是工程结构:
Example 7.10. Multi-project build - hierarchical layout
Build layout
multiproject/ api/ services/webservice/ shared/
Note: The code for this example can be found at samples/java/multiproject
which is in both the binary and source distributions of Gradle.
我们有三个工程: api
工程用来生成给客户端用的jar文件,这个jar文件可以为XML webservice 提供Java客户端。webservice
是一个web应用,生成 XML。shared
工程包含的是前述两个工程共用的代码。
要定义多工程构建需要一个“设置文件”(settings file),这个文件在项目的根目录下,指明哪些工程要被处理。它的名字叫 settings.gradle
. 对于我们的例子来说,对应的设置文件是这样的:
Example 7.11. Multi-project build - settings.gradle file
settings.gradle
include "shared", "api", "services:webservice", "services:shared"
更多信息看56章: Chapter 56, Multi-project Builds.
多工程构建一般会有配置是各工程都会用到的。比如我们的例子会通过“配置注入( configuration injection)”来实现,在根项目下定义一个公共配置。根项目就像一个容器,子项目会迭代访问它的配置并注入到自己的配置中。这样我们就可以简单的为所有工程定义主配置单了:
Example 7.12. Multi-project build - common configuration
build.gradle
subprojects { apply plugin: 'java' apply plugin: 'eclipse-wtp' repositories { mavenCentral() } dependencies { testCompile 'junit:junit:4.11' } version = '1.0' jar { manifest.attributes provider: 'gradle' } }
我们使用了Java插件,这样所有的工程都有了该特性。所以你可以在跟项目下通过 gradle build
编译、测试、打包了。
同一个构建中可以建立工程依赖,这样比如说,一个工程的jar文件就可以给另一个工程使用了。我们给 api
工程的构建增加对 shared
工程jar的依赖。这样Gradle会保证构建api工程之前总要构建shared。
Example 7.13. Multi-project build - dependencies between projects
api/build.gradle
dependencies { compile project(':shared') }
相关推荐
胖子安卓合并aar的解决方案... (在AGP 3.0-4.1.0和Gradle 4.9-6.5中测试)入门步骤1:套用外挂程式将以下代码段添加到您的根构建脚本文件中: buildscript { repositories { jcenter() } dependencies { classpath ' ...
Gradle JavaCPP 商业支持: 介绍 Gradle JavaCPP提供的插件使将和用作Gradle构建系统的一部分成为可能。 如果您遇到软件方面的任何问题,请随时提问。 我相信这还远非完美... 必备软件 要使用Gradle JavaCPP,您将...
- **Project**: 在Gradle中,一个项目是一个或多个任务的集合,通常对应于一个软件工程中的子项目。 - **Task**: 是一个独立的工作单元,例如编译源代码、运行测试等。 2. **Hello World示例** - Gradle提供了...
本资源仅为整个 Spring Boot 工程,无文档,有一定注释,适合要入门 Gradle 及 Spring Boot 的初学者。可参考此项目搭建 Spring Boot 项目。 另外,本不打算设置资源分,但却最低为 2 分,实属无奈。
本项目是一个关于Android NDK入门的实例,展示了如何混合使用Java和C/C++代码。我们将深入探讨这个主题,了解其关键概念、步骤以及实际应用。 首先,NDK的主要目的是为Android应用提供原生代码支持。原生代码通常比...
本指南将帮助新手快速入门,通过Java语言搭建开发和测试环境,使用金碟云提供的WEB API k3cloud-webapi-sdk.jar进行高效集成。 首先,我们需要了解金碟云的基本概念。金碟云是金碟公司推出的一款基于云计算的企业...
Android Gradle 入门指南中首先介绍了Groovy基础。Groovy是一种运行在JVM上的语言,与Java类似,所有的Groovy代码最终都会编译成.class文件并在JVM上运行。Groovy语言设计得更灵活,语法简单,更接近脚本语言,这...
它支持强大的多工程构建功能,以及基于Apache Ivy的强大依赖管理功能。Gradle允许开发者使用已有的maven和ivy仓库,且支持不需要远程仓库或配置文件(如pom.xml或ivy文件)的传递性依赖管理。在构建过程中,Gradle...
Gradle是一个通用的构建工具,通过它的构建...对Java项目而言,Gradle有Java插件,提供了像编译、测试、打包之类的功能。Java插件为构建项目定义了许多的默认设置,像源文件目录,编译后的文件存放位置等等。如果你是按
**Gradle** 是一种基于 Java 的项目自动化构建工具,采用 Groovy 或 Kotlin DSL(领域特定语言)来编写构建脚本,支持增量编译和依赖管理,是目前 Java 项目中最流行的构建工具之一。 ##### 特点: - **灵活性**:...
完成上述步骤后,你可以运行你的Java工程,查看 Velocity如何根据模板和数据生成结果。如果`VolecityTest.vm`包含类似`Hello, ${name}!`的语句,最终输出应为`Hello, John Doe!`。 7. **高级特性** Velocity还...
而`frc-gradle-demo`是一个专门为FRC团队提供的入门级项目,它利用了Java编程语言和Gradle构建工具。 **Gradle简介** Gradle是一种基于Groovy的开源构建自动化系统,它允许开发者通过声明式的方式定义构建过程。...
【Java自动化入门】是编程领域中的一个重要话题,尤其对于那些希望提升工作效率,减少重复劳动的开发者来说。在Java世界里,自动化通常涉及到测试自动化、构建自动化以及部署自动化等多个方面。这个"练习1-自动化...
SpringMvc入门工程源码是一个适合初学者了解和学习Spring MVC框架的项目。Spring MVC是Spring框架的一个模块,专门用于构建Web应用程序。它提供了一个模型-视图-控制器(MVC)架构,帮助开发者将业务逻辑、数据处理...
Gradle 是一个基于 Java 的自动化构建工具,Spring 源码使用 Gradle 进行构建。所以,我们需要下载 Gradle 并将其安装到本地。配置 Gradle 环境变量 GRADLE_HOME,添加 Path 变量 %GRADLE_HOME%\bin。执行命令 ...
【安卓学习入门工程】是为初学者设计的一个项目,旨在帮助新接触Android开发的程序员快速了解和掌握Android应用的基本构建过程。通过导入这个工程到Eclipse集成开发环境,你可以直接开始进行实际的代码编写和应用...
通过这个入门工程,你可以逐步掌握Java EE开发的基础,为更复杂的业务系统打下坚实的基础。记得在实践中不断学习,理解每一个组件的作用以及它们之间的协作机制,这样将有助于提升你的开发技能。
在Android开发过程中,保持代码质量和遵循最佳实践是至关重要的,这就是Lint工具的作用所在。Lint是一款静态代码...在本示例工程中,你将找到具体的代码实现和配置示例,帮助你快速入门并掌握自定义Lint规则的开发。