(Java,Android)三大自动化构建工具 Ant,Gradle,Maven(JCenter),并自动打Apk包

  build叫做构建,compile叫做编译。
  构建工具有很多种 :成熟大型项目常用的make ,Android平台开发应用的gradle ,人工智能TensorFlow的bazel。

> 1.Ant 
  ant的兄弟make,ant做的很多事情,大部分是曾经有一个叫make的所做的,不过对象不同,make更多应用于c/c++ ,ant更多应用于Java。在eclipse里先天支持ant,所以你可以在eclipse里边直接写build.xml。
  Ant是Java的生成工具,是Apache的核心项目;直接在apache官网下载即可, http://ant.apache.org/bindownload.cgi
  Ant类似于Unix中的Make工具,都是用来编译、生成;Ant是跨平台的,而Make不能;
  Ant的主要目的就是把你想做的事情自动化,不用你手动一步一步做,因为里面内置了javac、java、创建目录、复制文件等功能,所以可以直接点击Ant文件,即可编译生成你的项目;
 Ant学习总结- http://blog.csdn.net/xiazdong/article/details/7038851

Apache Ant热门的Java自动化构建工具- http://ant.apache.org/

> 2.Gradle

Gradle,自动化构建工具- https://gradle.org/ . Android Studio支持Gradle。
 Gradle是一个自由开源的自动化构建工具。它扩展了Apache Ant和Maven。它使用DSL(“域特定语言”),而不是Maven/Ant使用的XML格式。Gradle的另一大特点是DAG(“有向无环图”),可用来找到可以构建和运行任务的正确顺序。

  如果你在Gradle项目中使用了标准的Maven项目结构的话,那么在Gradle中也无需进行多余的配置,只需在文件中包含apply plugin:’java’,系统会自动识别source、resource、test srouce、 test resource等相应资源。不过Gradle作为JVM上的构建工具,也同时支持groovy、scala等源代码的构建,甚至支持Java、groovy、scala语言的混合构建。虽然Maven通过一些插件(比如maven-scala-plugin)也能达到相同目的,但配置方面显然Gradle要更优雅一些。
  Maven和Gradle设计时都采用了插件机制。但显然Gradle更胜一筹。主要原因在于Maven是基于XML进行配置。所以其配置语法太受限于XML。即使实现很小的功能都需要设计一个插件,建立其与XML配置的关联。
  Maven的设计核心Convention Over Configuration被Gradle更加发扬光大,而Gradle的配置即代码又超越了Maven。在Gradle中任何配置都可以作为代码被执行的,我们也可以随时使用已有的Ant脚本(Ant task是Gradle中的一等公民)、Java类库、Groovy类库来辅助完成构建任务的编写。    在Gradle中,与Makefile的"目标"相对应的概念是"任务",即"task",Gradle的构建过程,就是执行一条一条"task"任务的过程, 同样,一个"task"也是可以依赖另一个"task"的,这样,通过这种依赖关系,就可以将整个项目中各个"task"链接到一起了。Gradle将所有的"task"的定义全部交给Plugin来完成,由于每一种工程类型(Java项目、Android项目等),其构建过程都是大同小异的,因此为每一种类型的项目定义好了一种通用的Plugin,以后同类型的项目就可以直接使用该Plugin了,非常的灵活和方便。
  Gradle真的很强大很灵活,它将最核心的构建规都则交给了Plugin来完成,这样,轻松实现了构建过程的通用性,开发者只需要关注业务逻辑,以及少许的配置即可完成自动化编译和部署的过程. 

-- make工具在Android平台的运用:
  为了加快AOSP项目的编译速度,Android团队在N版本添加了ninja构建工具,ninja构建工具相对于make构建工具更底层。通过开源项目kati(kati是项目名,但是最终编译生成的程序名却是叫做ckati,后续我们将使用ckati这个名字)将Makefile文件翻译成ninja文件。make和ninja的关系就像cmake和make。还有一点要注意的,由于7.1以后部分使用的是Soong+Buleprint这套构建工具,将bp文件转换成ninja文件,所以Makefile文件和Buleprint文件是混合使用的,分析Makefile文件要小心一点。不过Blueprint+Soong这套构建工具代替make、kati这套构建工具只是时间问题。

> 3.Maven (jcenter仓库)

Apache Maven 用于Java的自动化构建工具- https://maven.apache.org/
  Apache Maven是一个免费开源的自动化构建工具。它可用来做依赖管理和构建,并且主要用于Java项目。但不限于基于Java的项目,也可以使用其他编程语言,如Ruby,Python,C#,Scala和其他计算机编程语言。

  Maven,只知道其名声很大,其作用是用来管理jar 包的。JAR文件都由CVS来维护; Maven(project.xml 和 maven.xml)与Ant(build.xml);Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。
  maven的用途、核心概念(Pom、Repositories、Artifact、Build Lifecycle、Goal)、用法(Archetype意义及创建各种项目)、maven常用参数和命令以及简单故障排除、maven扩展(eclipse、cobertura、findbugs、插件开发)、maven配置。
  maven是一个项目构建和管理的工具,提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。
  maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性。利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。
  maven中央仓库(http://repo1.maven.org/maven2/)是由Sonatype公司提供的服务,它是Apache Maven、SBT和其他构建系统的默认仓库,并能很容易被Apache Ant/Ivy、Gradle和其他工具所使用。开源组织例如Apache软件基金会、Eclipse基金会、JBoss和很多个人开源项目都将构件发布到中央仓库。 maven中央仓库已经将内容浏览功能禁掉了,可在http://search.maven.org/查询构件。
  注:不管是jcenter还是Maven Central ,两者都是Maven仓库

-- jCenter库
Android 快速发布开源项目到jcenter- http://blog.csdn.net/lmj623565791/article/details/51148825
使用Gradle发布Android开源项目到JCenter- http://blog.csdn.net/maosidiaoxian/article/details/43148643
Android studio 是从哪里得到库的?- http://blog.csdn.net/lu_xin_/article/details/51134849
jCenter库- https://jcenter.bintray.com

手把手图文并茂教你发布Android开源库(Jcenter maven)- https://www.jianshu.com/p/f4ee4dc56b41
JCenter仓库- https://bintray.com/bintray/jcenter
  jCenter库是一个著名的 Maven 仓库。编译脚本(buildscript)在编译工程的根目录,构建文件(build.gradle)用来告知Gradle去哪里下载对应的插件。mavenCenteral()作为maven的远端默认仓库。JCenter仓库的所有内容通过一个CDN经由HTTPS连接传输,速度也是很快的。使用jcenter()远端仓库用来支持java库的依赖。
   JCenter是Goovy Grape内的默认仓库,Gradle内建支持jcenter()仓库,项目库打包成aar文件类似jar,只是多了res,lib文件的包,上传到jcenter后,可以很方面的在本地调用库文件。
   jCenter库是由JFrog公司提供的Bintray中的Java仓库。它是当前世界上最大的Java和Android开源软件构件仓库。 所有内容都通过内容分发网络(CDN)使用加密https连接获取。JCenter是Goovy Grape内的默认仓库,Gradle内建支持(jcenter()仓库),非常易于在(可能除了Maven之外的)其他构建工具内进行配置。
  JCenter相比mavenCenter构件更多,性能也更好。但还是有些构件仅存在mavenCenter中。https://bintray.com/


> Ant/maven/Gradle自动打包,Eclipse/Android Studio的使用自动化之旅
Ant自动编译打包&发布 android项目- http://www.cnblogs.com/yaozhongxiao/p/3523061.html
android使用ant自动打包(包括更改文件中的内容)- http://blog.csdn.net/kakaxi1o1/article/details/46351215
使用ant构建android自动化打包实例源码- http://download.csdn.net/detail/javazejian/9417035
用ant的build.xml构建自动化打包android apk 完全详解- http://blog.csdn.net/javazejian/article/details/50579416


使用maven构建android 的apk包并自动签名- https://www.oschina.net/question/199946_38409
Maven打包/构建Android工程- http://blog.csdn.net/mem_lost/article/details/44561163
maven(完整Android项目多渠道打包、签名、混淆进阶)- http://blog.csdn.net/spring5555/article/details/43704633

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值