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

本文主要是介绍(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

这篇关于(Java,Android)三大自动化构建工具 Ant,Gradle,Maven(JCenter),并自动打Apk包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/416840

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2