【说明】上午整理了一下心情;下午继续开始任务,了解了restful,知道了那个牛人的博士论文,下载了管理工具gradle,并且部署了环境;晚上安装了idea继承环境并且建了一个简单的gradle项目(对着教程第一次使用idea我也是需要适应半天)
一:今日完成
1)rest架构规范
2)idea环境安装
3)gradle插件使用
二:明日计划
1)建立自己的REST接口。
2)使用PostMan/dhc测试自己写的接口,确认接口可以正常使用。
3)任务二完成
三:疑难问题
restful架构搞的我也是一脸懵逼,看了大量的文章,包括上层的思想介绍,下层的代码演示,还是不得要领
四:思考总结
今天配置环境变量的时候竟然因为目录带有中文出现了编译问题!下次要注意
- Gradle是一种构建工具,它可以帮你管理项目中的差异,依赖,编译,打包,部署......,你可以定义满足自己需要的构建逻辑,写入到build.gradle中供日后复用.
- Gradle不是一种编程语言,它不能帮你实现软件中的任何实际功能
- ant可以自动化打包逻辑。
maven也可以自动化打包,相比于ant,它多做的事是帮你下载jar包。
但是maven的打包逻辑太死板,定制起来太麻烦,不如ant好用。gradle就是又能自动下jar包,又能自己写脚本,并且脚本写起来还比ant好用的这么个东西。AS其实就是Intellij IDEA的安卓开发环境特供版(谷歌定制版),Intellij IDEA是有收费版本的IDE。
Ant和Maven都是基于XML的构建工具,Gradle是用Groovy编写的构建工具,Groovy是JVM衍生的与JAVA语法高度兼容的动态强类型语言。Gradle通过编写一个名为build.gradle的脚本文件对项目进行设置,再根据这个脚本对项目进行构建(复杂的项目也有其他文件)
Gradle 脚本本质上就是Groovy脚本,只不过高度利用了groovy的语法糖,例如省略方法参数括号和省略句尾分号等,让代码看起来像DSL。
所以几乎所有java和groovy支持的语法,它的脚本都支持。(使用JAVA和GROOVY的SDK应该也是没问题的)Gradle支持基于惯例的构建,并有丰富的适合不同情景下的插件库,光有官方用户手册支持的就有20多种,方便构建。
Gradle里有两个基本概念:项目(projects)和任务(tasks)。项目由多个任务组成,一个项目可以理解为提供给不同设备的构建版本,如桌面版、网页版、安卓版、iOS版等等,也可以理解为一种行为,例如部署应用到生产环境。任务相当于Ant的target,可以理解成一个构建中原子性的工作,例如编译、打包、执行等。需要注意的是,Ant中他自己的命令例如javac、copy等也叫做task,但Ant的task远没有Gradle的task那么自由。
Gradle的构建分两个阶段,第一阶段是设置阶段(configuration phase),分析构建脚本,处理依赖关系和执行顺序等,脚本本身也需要依赖来完成自身的分析。第二阶段是执行阶段(execution phase),此阶段真正构建项目并执行项目下的各个任务。
Ant与Maven对于Gradle,前者编写容易,但功能有限,需要人工操作的过程也多;后者依托于庞大的依赖仓库,因此有着强大的外部依赖管理,但添加本地依赖并不方便,且项目不能灵活修改。而Gradle能很好地结合Ant与Maven各自的优点,可以随意的编写任务并组合成项目,直接利用Maven仓库,并且能很好的支持传递依赖和内部依赖。(本部分为个人主观意见,可能与大多数人的意见并不相同)(其实也都是别人的个人主观意见,来源于我当初搜索的Gradle相关文章内容)
通俗一点类比成吃饭的话,大致就是:Ant是自己买菜洗菜烧水做饭,Maven是去饭店点餐,Gradle是3D打印食物。
一句话概括就是:依赖管理和任务执行。
像Ruby里面的bundler+rake,像iOS中的cocoapods,像node中的npm+grunt.
通俗的讲就是:你的项目需要哪些第三方库,它帮你把它们都下载下来,并且编译好放到指定的位置,你就直接可以import后用了。
它本身是基于Apache的ant和maven的,但都不是特别好用,要引入一个库,还得写好多行的XML,麻烦死了。而且他们在任务执行上都比较弱,所以gradle就逐渐发展壮大了并被Google所推崇了。
编译源代码只是整个软件开发过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。
整个过程可以分成以下几个步骤:
- 编译源代码
- 运行单元测试和集成测试
- 执行静态代码分析、生成分析报告
- 创建发布版本
- 部署到目标环境
- 部署传递过程
- 执行冒烟测试和自动功能测试
如果你手工去操作这些过程会很繁琐,效率低下,Gradle提供自动化的构建机制,上面的每个步骤都可以表示成Gradle里面的一个任务(Task),任务之间可以相互依赖,比如你定义任务A和任务B,
defaultTasks ‘taskB‘
task taskA << {
println "i‘m task A"
}
task taskB << {
println "i‘m task B, and I depend on " + taskA.name
}
taskB.dependsOn taskA
运行命令$ gradle -q之后(参数q让Gradle不要打印错误之外的日志),就能看到如下的预期输出:
i‘m task Ai‘m task B, and I depend on taskA执行完之后Gradle会生成相应的报告,如果没有问题就可以发布到生产环境中。Gradle脚本是基于Groovy领域特定语言,也就是说构建文件也是代码,Maven引入的XML配置文件可读性和可扩展性比较差,Gradle可以让你像写代码一样写出容易维护、可复用、可读性好、易于理解的构建代码。Gradle同样引入了依赖管理、仓库和标准项目布局,Gradle引入的领域特定语言使得添加和删除依赖非常方便,你只需要在dependency块里面添加一行代码,注明要在哪个配置部分引入依赖,以及要引入哪个依赖,比如:
dependencies {
compile(‘org.springframework:spring-core:2.5.6‘)//表示编译期依赖spring-core这个库
testCompile(‘junit:junit:4.7‘)//表示测试代码的时候依赖junit这个库
}
传统的构建工具比如ant一开始并没有引入中央仓库的概念,他需要手动复制依赖的库文件到指定的目录,这使得这些JAR文件添加到版本控制系统当中,而Gradle会自动解析你的依赖配置,从中央仓库比如mavenCentral()中解析并下载依赖到你的本地仓库中,这些文件并不会添加到版本控制系统当中,Gradle也支持传递依赖,你也可以排错部分传递依赖或者干脆去掉传递依赖,还可以支持动态版本,只需要把最后一位数字改成+号。Gradle支持多项目构建,当你的项目变得越来越庞大的时候,维护起来会比较困难,Gradle多项目构建使得你可以根据代码的功能把项目分成几个子项目,比如web项目开发中把项目分成逻辑、视图和控制三个模块,每个模块可以有各自的配置和依赖,也可以定义通用的配置。当你需要为不同的环境打生成不同的发布时,以往可能是为每一个目标环境新建一个过程,有了gradle你不需要重复的工作,你会很容易生成不同的版本,你可以指定多个版本共同的构建逻辑,也可以给他们单独指定一些脚本。总而言之,Gradle并没有引入太新鲜的东西,它是一个结合Ant和Maven理念的优秀实现,最重要的就是引入了Groovy语言,使得构建代码更加容易维护、可读性强、易于扩展,给了你充分的自由去自定义你的项目。
- 依赖:Android Studio, Gradle, 其中过程,
Android Studio使用Gradle来编译Android apk 本文大致讲述其中过程
Gradle
依赖:Apache Ant ,Apache Maven ,项目自动化建构工具 ,Groovy, 特定领域语言(DSL),
Gradle =>一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)
Apache Ant => 由Apache 提供的自动化软件构建工具 (可以理解为其负责软件的编译) 开始于2000年左右
Apache Maven => 是由Apache 提供的管理项目的构建 报告和文档的软件项目管理工具 (我将其理解为 通过pom.xml来描述软件依赖关系 并提供一个云端类库) 开始于2001年左右
项目自动化建构工具 => 抽象项目编译过程 提供一个容易使用的接口的工具
Groovy => 一门编程语言 基于JVM 的面对对象的动态脚本语言
特定领域语言=>为了解决某个特定领域的问题 而编写的语言 一般基于其他语言
Android Studio =>2013年谷歌推出的Android开发环境 使用Gradle 作为编译工具
其中过程
依赖:grdle基本知识,编译过程,
Android Studio 使用Gradle做为Android apk的编译工具 在android studio执行run 实际上底层调用的是gradle 命令 由gradle再去使用Android SDK中编译工具 这主要是因为直接使用sdk的编译工具太麻烦太痛苦 而gradle提供了一个很好的接口 让我们能通过命令行来编译android apk
grdle基本知识
gradle通过解析build.gradle这个文件来运行
build.gradle 主要由task和一些配置组成,task之间有相互依赖关系 通过这些依赖关系和配置就能编译项目
可以通过 apply plugin 来加入一些默认的task 例如
apply plugin: ‘java‘
这是java的插件 他加入了许多编译java的task 如果你的目录结构正确 那么通过gradle 运行 task 就能编译java项目
和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin。Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的Plugin,还有War,Ear等。与Maven不同的是,Gradle不提供内建的项目生命周期管理,只是java Plugin向Project中添加了许多Task,这些Task依次执行,为我们营造了一种如同Maven般项目构建周期。