- 浏览: 288194 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yhxf_ie:
网上都是这个方法 改了之后仍然无效啊! 真急人
让Gradle支持中文 -- 关于 "编码 GBK 的不可映射字符"错误的解决 -
smart152819:
夜行侠老师gradle教学视频地址:http://www.it ...
Gradle笔记 -
laorer:
gradle init --type pom
MAVEN项目秒变Gradle项目 -
sulpha:
Gradle 2.0以上,需要把Compile改为JavaCo ...
让Gradle支持中文 -- 关于 "编码 GBK 的不可映射字符"错误的解决 -
marshan:
默认情况下都报错 没有setupBuild这个task 楼主提 ...
MAVEN项目秒变Gradle项目
6.1
每个构建包含一个或多个 "Project"
每个project包含一个或多个 "Task",每个 task 都是一个原子操作,或是编译一些文件,或是打jar包 ,或是生成javadoc
6.2
你可以用gradle命令来调用当前目录下的build.gradle文件,build.gradle通常称之为构建脚本;构建脚本中定义了一个项目和包含的任务
hello world:第一个构建脚本
在D盘根目录建立build.gradle的文件,内容如下:
task hello {
doLast {
println 'Hello world!'
}
}
在cmd下输入
d:
gradle -q hello
上面的实例定义了一个叫hello的task;当执行gradle hello时便会返回所提供的方法的结果
6.3 任务依赖
如下脚本
task hello << {
println 'Hello world'
}
task intro(dependsOn: hello)<<{
println 'Depends'
}
--------------------
执行
>gradle -q intro
Hello world!
I'm Gradle
6.6 动态任务
4.times { counter ->
task "task$counter" << {
println "I'm task number $counter"
}
}
-----------------------------------
Output of gradle -q task1
> gradle -q task1
I'm task number 1
6.7 处理当前任务
4.times { counter ->
task "task$counter" << {
println "I'm task number $counter"
}
}
task0.dependsOn task2, task3
----------------------------
Output of gradle -q task0
> gradle -q task0
I'm task number 2
I'm task number 3
I'm task number 0
task hello << {
println 'Hello Earth'
}
hello.doFirst {
println 'Hello Venus'
}
hello.doLast {
println 'Hello Mars'
}
hello << {
println 'Hello Jupiter'
}
do.first和do.last可被执行多次,执行顺序按first..last
<< 操作符相当于 doLast的别名
6.8 获取任务名称
可以用$task.name来获取任务名称
task hello << {
println 'Hello world!'
}
hello.doLast {
println "Greetings from the $hello.name task."
}
6.9
扩展参数
task myTask {
ext.myProperty = "myValue"
}
task printTaskProperties << {
println myTask.myProperty
}
Output of gradle -q printTaskProperties
> gradle -q printTaskProperties
myValue
6.12
默认任务
defaultTasks 'clean', 'run'
task clean << {
println 'Default Cleaning!'
}
task run << {
println 'Default Running!'
}
task other << {
println "I'm not a default task!"
}
Output of gradle -q
> gradle -q
Default Cleaning!
Default Running!
-------------------------
task distribution << {
println "We build the zip with version=$version"
}
task release(dependsOn: 'distribution') << {
println 'We release now'
}
gradle.taskGraph.whenReady {taskGraph ->
if (taskGraph.hasTask(release)) {
version = '1.0'
} else {
version = '1.0-SNAPSHOT'
}
}
7:JAVA quickStart
7.2 使用JAVA plugin
apply plugin :'java'
可参考示例
samples/java/quickstart
该插件将会依据如下目录结构来检索你的项目
src/main/java
src/main/resources
src/test/java
src/test/resources
build/libs
build:你可以执行其中的build任务来对你的源码进行编译,单元测试以及打包
gradle build
clean:执行清除任务,删除build目录,移除所有构建文件
assemble:编译并且打jar包,但不会执行单元测试,很多其它插件都可以增强该任务功能,比如如果添加了war plugin,该任将会打出war包
check:编译并且测试代码,如果添加了Code-quality插件,该任务同时会对代码风格进行检查
7.2.2 额外依赖
可以使用MAVEN中央仓库来获取依赖jar包
---定义仓库
repositories {
mavenCentral()
}
---增加依赖
dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
7.2.3 自定义项目
7.2.4 发布jar包
uploadArchives{
repositories{
flatDir{
dirs 'repos'
}
}
}
执行gradle uploadArchives便可将jar包发布到respos文件夹下
7.3 创建eclipse项目
apply plugin: 'eclipse'
apply plugin: 'java'
apply plugin: 'eclipse'
//自定义属性
sourceCompatibility = 1.5
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version
}
}
//中央仓库
repositories {
mavenCentral()
}
//依赖JAR包
dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
//给test任务传递参数
test {
systemProperties 'property': 'value'
}
//Jar包位置
uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}
7.3.1 多项目管理
创建多项目脚本必须建立setting.gradle配置文件如下
include "shared", "api", "services:webservice", "services:shared"
7.3.2 公共配置
8. 基础依赖管理
8.3 配置依赖
8.4 外部依赖
定义
dependencies {
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
}
简要写法"group:name:version".
dependencies {
compile 'org.hibernate:hibernate-core:3.6.7.Final'
}
8.5 gralde如何为外部依赖下载jar包?只需要定义一个仓库即可
至少需要定义一个仓库,也可以直接使用maven中央仓库或本地maven仓库
如下
使用中央仓库:
repositories {
mavenCentral()
}
使用自定义仓库
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
使用远程ivy仓库
repositories {
ivy {
url "http://repo.mycompany.com/repo"
}
}
使用本地ivy仓库
repositories {
ivy {
// URL can refer to a local directory
url "../local-repo"
}
}
一个项目可以包含多个仓库,Gradle将会在每个仓库中搜寻所需的依赖,当搜索到所需依赖时停止搜索
8.6 手工发布
依赖于各种好用的插件,通常无需对发布操作进行特殊处理;但需要通知gradle进行发布的位置
可以用uploadArchives task来完成此项工作;以下是一个发布到远程IVY仓库的示例
uploadArchives {
repositories {
ivy {
credentials {
username "username"
password "pw"
}
url "http://repo.mycompany.com"
}
}
}
现在,运行gradle uploadArchives,gradle将会构建并上传生成的jar包,同时生成并上传ivy.xml文件
---发布到maven仓库
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://localhost/tmp/myRepo/")
}
}
}
10.WEB application quickStart
本章介绍如何让gradle来为web应用提供支持,gradle为web应用开发提供了两个插件War plugin和jetty plugin
war plugin继承了java plugin为项目构建war包
jetty plugin继承了war plugin可以将你的web应用部署到jetty 容器中
当执行build命令时,gradle会寻找src/main/webapp下的源文件,并获取编译后的class和他们运行时的依赖打入war包中
10.2部署到容器中运行
使用插件apply plugin : 'jetty'
应用该插件时同时会应用war plugin,执行gradle jettyRun将会把你的项目部署到容器中
运行gradle jettyRunWar将会构建war包并部署到容器中
url,端口号等可以通过编辑脚本文件来进行加载
11.1 使用gradle命令行
你可以使用命令行一次执行多个任务,如
gradle compile test将分别执行compile和test任务,gradle会按命令中的顺序来依次执行每个任务,并且也会执行每个任务中的依赖,每个任务只会被执行一次;
如下示例
task compile << {
println 'compiling source'
}
task compileTest(dependsOn: compile) << {
println 'compiling unit tests'
}
task test(dependsOn: [compile, compileTest]) << {
println 'running unit tests'
}
task dist(dependsOn: [compile, test]) << {
println 'building the distribution'
}
dist和test都依赖于complie,但compile只会被执行一次 执行结果如下
> gradle dist test
:compile
compiling source
:compileTest
compiling unit tests
:test
running unit tests
:dist
building the distribution
BUILD SUCCESSFUL
Total time: 1 secs
11.2 排除任务
你可以使用 -x参数来排除不需要执行的任务,让我们用上一个示例中的脚本来体验一下
> gradle dist -x test
:compile
compiling source
:dist
building the distribution
BUILD SUCCESSFUL
Total time: 1 secs
可以看到,test任务并没有被执行,即使它被dist任务所依赖,同时test任务所依赖的compileTest也同样没有被执行,
而像complie所依赖的除了test之外的任务仍然正常执行
11.3 持续构建-即使发生错误
默认情况下,Gradle在执行时如果发生错误会立即中止执行任务,这能使构建更快完成但无法查看更多其它的失败信息,
此时可以使用
-continue
参数,在一个构建中尽可能捕获更多的失败信息;
当增加此参数是,gradle会在其所依赖的任务成功执行的前提下独立的执行每个任务;例如,如果你使用了
'java'和'checkStyle'插件,即使你的代码规范检查和单元测试失败,gradle仍然可以运行checkStyle,执行单元测试并且构建javadoc;所有的错误都会在
P.S:只有其所依赖的任务成功执行之后任务才会被执行,所以如果当java代码编译失败时,单元测试任务即不会被执行,因为
test任务直接依赖于compileJava任务
11.4 任务名称简写
在执行任务时,只要键入的字符足以唯一区分出一个任务即可省去其它字符.如11.1示例
执行dist任务 输入gradle di即可
驼峰命名式简写.如11.1示例
要执行compileTest任务只需输入 gradle cT即可 当然输入 gradle cmopTest同样可以执行构建
11.5 执行gradle构建时,会默认执行当前目录下的构建文件;也可以用"-b"参数来指定其它构建文件;
如下示例
subdir/myproject.gradle
task hello << {
println "using build file '$buildFile.name' in '$buildFile.parentFile.name'."
}
Output of gradle -q -b subdir/myproject.gradle hello
> gradle -q -b subdir/myproject.gradle hello
using build file 'myproject.gradle' in 'subdir'.
你也可以使用-q参数,仅仅指明project路径即可,在"多项目构建"中需要用-p参数来替代-b参数
评论
地址:http://www.itjoin.org/course/detail/575771f20cf22db210ccab6b
课时1:简单项目构建
课时2:springbootmaven项目构建
课时3:maven的插件
课时4:maven的生命周期以及常见问题
课时5:maven的私服
课时6:maven的继承与聚合
课时7:Springboot的freemark
课时8:Springboot的Websocket
课时9:Gradle的springboot项目构建
课时10:Gradle打包,发布
课时11:Gradle_Task
课时12:Gradle_内部运行原理以及自定义插件编写
课时13:Gradle_打zip包自动拷贝依赖
课时14:jar包如何运行到线上
发表评论
-
Mybatis+Proxool+Spring多数据源切换
2012-08-10 13:57 6903话不多说直接上代码,用者自提,不喜勿喷,3Q < ... -
JSTL 学习、应用记录
2011-07-28 14:34 1224JSTL 学习、应用记录 原来一直没有看过,我说过我是新 ... -
Spring两大核心-AOP和IoC
2011-07-11 10:43 1426Spring两大核心-AOP和 ... -
java内存泄露解析
2011-07-11 10:42 1545原因有很多种, ... -
Java 反射机制
2011-07-11 10:41 1019Java 反射机制 摘要 Reflecti ... -
java 23种设计模式
2011-07-11 10:40 869工厂模式, 工厂方法模式,单例模式, 外观(Facad ... -
Class.forName和New的比较
2011-07-11 10:36 1151Class.forName和New的比较 ... -
null或空值的判断处理-java
2011-07-11 10:33 1403null或空值的判断处理-java 原帖地址 ... -
java中字符串链接性能比较
2011-07-11 10:31 1204原帖地址:http://blog.csdn.net/bes ... -
[转]提高Java反射速度的方法以及对setAccessable的误解
2011-05-30 15:20 2002mercyblitz 写道 ouchxp 写道 ... -
用MyElipse配置WebLogic
2011-04-12 16:16 1361(1)安装Weblogic设置如下: 首先建立domai ... -
Myeclipse9.0正式版下载地址(附破解包)
2011-04-12 11:09 4588用者自提,谢绝乱喷 Windows http:// ... -
C#之int挑战Java之Integer
2010-10-25 16:55 1912C#之int挑战Java之Integer ... -
是 String , StringBuffer 还是 StringBuilder ?
2010-07-06 09:39 1145相信大家对 String 和 StringBuffer 的 ... -
选择抽象类还是接口
2010-07-06 09:33 1119Java接口与Java抽象类的区别: 1. Ja ... -
JAVA程序员葵花宝典
2010-03-31 08:54 1239话不多说,先下载再说^^ -
Struts2笔记 - 10 自定义类型转换器
2010-02-10 17:05 1045package struts2.demo.action; ... -
Struts2笔记 - 09 请求参数的接收
2010-02-10 15:21 1441采用基本类型接收请求参数(get/post)在Action类中 ... -
Struts2笔记 - 08配置多个Struts配置文件
2010-02-10 14:54 1158动态方法调用和使用通配符定义 由请求参数指定调用action ... -
Struts2笔记 - 07 配置多个Struts配置文件
2010-02-08 16:13 1019配置多个Struts配置文件 <struts> ...
相关推荐
《Gradle笔记——Java开发者的进阶指南》 Gradle,作为一款强大的构建工具,以其灵活性和高效性深受开发者喜爱,尤其在Java开发领域。它借鉴了Maven的优点,同时弥补了Maven的一些不足,使得项目构建过程更加简单且...
本篇文章主要介绍一下Gradle的构建基础。它看起来似乎和android项目没多大关系,不能让人一下子理解android项目中的Gradle配置文件,但是这篇基础真的很重要。学习Gradle前,需要有一个Groovy语言的基础,以免被...
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码。而大部分的项目,它们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建代码,...
Git 和 Gradle 入门学习笔记 Git 是一个分布式版本控制系统,Gradle 是一个基于 Apache Ant 和 Maven 的构建自动化工具。在本笔记中,我们将学习如何安装和使用 Git 和 Gradle。 Git 安装 要安装 Git,可以从 ...
Gradle 学习笔记简书1 本文档将对 Gradle 的基本命令、Groovy 语言基础和闭包委托进行详细的讲解。 Gradle 命令 ------------ ### 1. 生成 Wrapper 使用 `gradle wrapper` 命令可以生成 Wrapper。 ### 2. 打印...
**Gradle 学习笔记** Gradle 是一种高级的构建工具,它与 Maven 类似,主要负责管理和自动化软件项目的构建过程,包括管理依赖、编译、打包和部署等任务。然而,Gradle 提供了比 Maven 更高的灵活性,因为它的构建...
### Android Studio配合Gradle及Unity交互笔记 #### 一、Gradle安装与配置 ##### 1.1 Gradle安装步骤 根据文档中的指示,我们可以通过Scoop来安装Gradle。Scoop是一个Windows平台上的开源包管理器,它可以方便地...
总结起来,这篇开发笔记是关于在Android Studio中使用gradle-experimental插件进行JNI开发的实践教程。通过学习,开发者可以掌握如何在Java应用中集成C/C++代码,提高性能并解决特定问题。博客链接提供的示例代码能...
- **Gradle入门**:学习如何创建Gradle项目,配置build.gradle文件,以及执行基本的构建任务。 - **Gradle插件**:了解常用的Gradle插件,如Java插件,学会如何自定义和应用插件。 - **依赖管理**:熟悉Gradle的依赖...
总的来说,本文档为 Android Studio 和 Unity 的交互提供了详细的笔记,不仅说明了操作步骤,还分析了解决遇到问题的方法,并对比了不同交互方法的优缺点,对于移动游戏开发者在使用这两种工具时遇到的问题有一定的...
9. **gradle**: 这个目录包含了Gradle wrapper,用于自动下载和管理Gradle版本。 在实现笔记本应用的过程中,你需要关注以下几个核心概念: - **Activity**: Activity是Android应用的基本组件,代表用户可以看到并...
Gradle是一种流行的构建自动化工具,尤其在Java和Android开发中广泛使用。本文将深入探讨Gradle的核心概念、任务管理、项目结构、依赖管理和属性配置。 1. **Gradle任务和动作** - 每个Gradle项目至少包含一个`...
确保Android SDK、JDK以及Gradle版本正确,并配置好Android Virtual Device (AVD)或连接真机设备用于调试。 2. **UI设计** 使用Android Studio内置的布局编辑器(XML)设计笔记APP的用户界面,通常包括主界面、...
增量编译 和 缓存改进,加快构建速度。 更加完善的 Kotlin DSL 支持,提升开发者的生产力。 改进的 Java、Groovy、和 Android 构建工具支持。 兼容性更强,支持更多第三方插件和工具链
以上脚本给出了文章提到的代码片段如何引入项目中,并且是经过反复实测的,打包aab/apk时能自动添加exported字段,如果遇到任何问题,请邮件联系1638072596@qq.com,有更好的解决方法欢迎一起交流
新笔记本,java、git、elasticsearch、mycat、设计模式、gradle、vue,_note-book
笔记 插件需要 Java 8+ 如果 Gradle 5.1.x 和 5.2.x 上缺少git.properties ,请使用gitPropertiesResourceDir配置不同的输出目录 由于 gradle-git-properties v2.x,我们需要 JGit 5.x,如果您有其他使用 JGit 1.4....
使用Gradle构建Web应用程序笔记该存储库包含指南文档源。 要以已发布的形式查看该指南,请在上进行查看。 了解如何使用Gradle和Open Liberty构建和测试简单的Web应用程序。您将学到什么您将学习如何使用Gradle war...
10. **Maven或Gradle**:作为构建工具,它们在管理依赖和构建流程中发挥着重要作用。笔记可能介绍如何配置和使用这些工具来构建J2EE项目。 通过李兴华老师的《J2EE核心框架 笔记》,学习者可以对J2EE有深入理解,并...