导航:首页 > 程序命令 > gradle命令编译

gradle命令编译

发布时间:2022-07-19 15:27:04

㈠ gradle是什么呢

Gradle是一个构建工具。它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的命令自动为我们构建app。androidStudio中默认就使用Gradle来完成应用的构建。有些同学可能会有疑问:”我用AS不记得给Gradle指定过什么构建规则呀,最后不还是能搞出来个apk。

gradle构建工具多项目管理

实际使用中,往往需要管理的都不是单单一个项目,maven使用依赖,继承,组成的概念,在父模块指定自己的子模块,并且准备一些各个子模块公用的资源,配置信息等等。将打包的模块与实现具体功能的模块分开的做法来管理多个项目。Gradle在这一方面做得更加清楚。

㈡ 如何通俗地理解 Gradle

来自知乎:


如何通俗地理解 Gradle?

我以前一直用 Eclipse with ADT 来开发Android 项目,而且对它的基础的原理掌握不深,直接上手开发的,没有去考虑太多的东西。现在手头上有一个新的项目要使用到Android Studio ,我早有耳闻AS大名,但是由于本人才疏学浅,这几天在学习AS的过程中对Gradle这个东西表示很不能理解,找了很多资料但是都描述得很专业,所以想问问各位,有没有什么比较形象易懂的解释来描述一下Gradle,它是什么东西,它有什么用,相对于Eclipse with ADT 中编译Android 程序的机制,他有什么优势?


ghui

谢邀

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于java、Groovy和Scala,计划未来将支持更多的语言。

上面是维基上对Gradle的解释,相信一个没有接触过构建的人是不大能看明白的,当初我也是.下面是我对Gradle通俗的理解:

软件开发讲究代码复用,通过复用可以使工程更易维护,代码量更少..... 开发者可以通过继承,组合,函数模块等实现不同程度上的代码复用.但不知你有没有想过,软件开发也是一种工程作业,绝不仅仅是写代码,还涉及到工程的各种管理(依赖,打包,部署,发布,各种渠道的差异管理.....),你每天都在build,clean,签名,打包,发布,有没有想过这种过程,也可以像代码一样被描述出来, 也可以被复用.

举个例子

我是做Android开发的,你可知道国内有n个Android市场,n个手机品牌,n个手机尺寸......,一般公司都会针对不同的市场单独发包用来统计不同渠道的下载量等情况,可能需要针对不同(品牌,尺寸等各种硬件信息)的手机做一些特殊的处理,这个时候你可以针对不同的情况单独建一个工程,或者更好一点你可以通过一些变量来控制,像这样:

if(isMoto){do something} else if(isHuawei){do something} ...

差异管理

但这两种解决方法都有自己的缺点,特别是前一种有极大的代码重复.后一种稍微好一点,但这种方式的差异是运行时的,不是静态的,对于moto手机上的处理逻辑对华为手机来说一点作用也没有,但这一段针对moto手机的处理逻辑也被装到了华为手机上了,通过gradle的proctFlavor与buildtype可以实现静态级的差异控制可以参考如何通过Gradle实现一套代码开发不同特性的APK · ByGhui

说到前面的多渠道问题,不同的渠道一般会对应不同的渠道号,你当然可以通过修改一次打一个包这种纯手工的方式来生成你的多渠道包,但据听说国内某团购网站的Android App有100多个渠道.这里出现了什么?重复,反复的去打包而且这些包之前的差异很小(只是渠道号不同),和写代码一样我们应该复用,通过Gradle可以实现一个命令打出所有的渠道包,一个命令打出指定的渠道包.再复杂一点,你可能需要不同的渠道对应不同的签名文件,不同的icon,不同的服务器地址...这些都可以通过Gradle来方便的实现.

依赖管理:

做软件开发你可能需要依赖各种不同的jar,library.你当然可以通过将.jar/library工程下载到本地再到你的工程中,但不知你是否听说过国外有个叫中央仓库的东西,在这个仓库里你可以找到所有你能想到以及你从来没听说过的jar,aar...The Central Repository Search Engine这里可以找到所有你需要的依赖,而你需要的只是指定一个坐标,如下:

<img src="https://pic4.mg.com/_b.jpg" data-rawwidth="330" data-rawheight="24" class="content_image" width="330">剩下的依赖的寻找,下载,添加到classpath等你都不需要去关心,通过这种方式来维护依赖的好处有以下几点:

剩下的依赖的寻找,下载,添加到classpath等你都不需要去关心,通过这种方式来维护依赖的好处有以下几点:

依赖不会进入到你的版本控制仓库中(默认会缓存到~/.gradle/下)

方便卸载装载依赖(只是一条坐标依赖,不需要删除即可)

方便的版本管理,如上图中的2.3.3既是picasso的版本号,若改为+就表示从中央仓库中下载最新的版本

不同工程的相同依赖不会存在重复副本(只在~/.gradle下存在一份)

项目部署

这方面我没怎么接触过,但据我所知通过一些插件,可以实现自动将你的输出(.jar,.apk,.war...)上传到指定仓库,自动部署...

罗哩罗嗦说了这么多,不知大家有没有理解

总结一下:

Gradle是一种构建工具,它可以帮你管理项目中的差异,依赖,编译,打包,部署......,你可以定义满足自己需要的构建逻辑,写入到build.gradle中供日后复用.

Gradle不是一种编程语言,它不能帮你实现软件中的任何实际功能

通俗的解释肯定是不严谨的解释,不妥之处欢迎讨论.

###

赞同过百,放出之前相关分享的幻灯片

###

截止到现在(1432311622353)共收到342个赞同与感谢,再次感谢大家的支持!如果你觉得我的分享对你有帮助,请关注我! 以后我会分享更多更优质的内容给大家.

说好的幻灯片在这里

(是之前在乐视时一次内部分享的幻灯片,内容有删减(涉及到公司具体项目的部分),此幻灯片参考了很多其它的资料,内部的链接很值得大家打开看看)


编辑于 2017-02-2753 条评论感谢


nonesuccess

你都说了要通俗的理解,那就用不着学习什么理论了,通俗着来就是了。

通俗的说:gradle是打包用的。

你觉得解决你的问题了吗?如果没解决,那是你的问题提得不够好。比如我猜你应该提:为什么要打包发布,打包发布有几种常见方法,为什么这些常见方法中要选gradle,等等。

针对我猜的这些内容,通俗的讲是这样的:

以在eclipse里面写java程序为例

为什么需要打包:
最初写完了,直接右键run就可以了。但是程序写完了毕竟是要发布到服务器上或者给别人用的,你第一不可能让所有要运行的人都装个eclipse,第二不可能把源代码公布给所有人。所以你需要把你的代码发布成二进制形式,让其它环境方便运行,这就是打包。

为什么用ant
打包的时候要做很多事,比如说配置文件中的用户名和密码,你本地开发和程序实际运行时的内容肯定不一致,所以需要有两个文件,开发的时候用一个,实际运行的时候用一个。这样每次打包的时候都要重复的做这些事,ant可以让你用xml的形式把这些事情写成脚本,然后自动运行。

为什么用maven
你的项目要用很多jar包,比如你写日志要用个log4j吧,连数据库要用个connector吧。这年头写程序不用个spring都不好意思出门,下载下来的spring包打开一看,密密麻麻的好几十个jar,不知道用哪个不用哪个。而且,即便是你一狠心把这些jar包都放进来,很大可能性还是不能运行,因为还要依赖其它的jar包。哪天想升级个spring小版本,所有jar包都要重来一遍,你也不记得哪些是由于spring引进来的jar包了。
所以有了maven,你只要配置一下说我要用spring 3,所有jar包都给你下载好了,你直接运行就行了。赶明儿想升级版本,直接把3改成4,新的jar包也给你下载好了。

然后?
用了maven,jar包是方便了,但我打包的时候还是有好多事要做啊,然后你会发现maven实在是不知道怎么做这些事,于是开始怀念ant。
gradle就是又能干maven的活,又能干ant的活,用groove语言写脚本,表达能力还更强。

就这意思。


===
我也是这两天才看了两眼gradle,了解不深。简化版如下:

ant可以自动化打包逻辑。
maven也可以自动化打包,相比于ant,它多做的事是帮你下载jar包。
但是maven的打包逻辑太死板,定制起来太麻烦,不如ant好用。gradle就是又能自动下jar包,又能自己写脚本,并且脚本写起来还比ant好用的这么个东西。

㈢ 如何在 Eclipse 下用 Gradle 构建 Web Application

使用的环境是: Eclipse IDE for Java EE Developers Kepler + JDK 1.7.

好, 下面正式开始:

1.安装 Gradle 插件. 在 Eclipse Marketplace 中搜索 Gradle, 选择安装 Gradle Integration for Eclipse

2.新建一个 Dynamic Web Project, 在项目根目录下新建 build.gradle 文件, 并向其中写入如下内容:

importorg.gradle.plugins.ide.eclipse.model.Facet

applyplugin:'java'
applyplugin:'war'
applyplugin:'eclipse-wtp'

sourceCompatibility=1.7//设置JDK版本
webAppDirName='WebContent'//设置WebApp根目录
sourceSets.main.java.srcDir'src'//设置Java源码所在目录

//设置maven库地址
repositories{
mavenCentral()//中央库
//maven{url'http://maven.oschina.net/content/groups/public/'}//自定义库地址
}

//设置依赖
dependencies{
providedCompile'javax.servlet:servlet-api:2.5'//编译期
providedRuntime'javax.servlet:jstl:1.2'//运行时
}

//设置ProjectFacets
eclipse{
wtp{
facet{
facetname:'jst.web',type:Facet.FacetType.fixed
facetname:'wst.jsdt.web',type:Facet.FacetType.fixed
facetname:'jst.java',type:Facet.FacetType.fixed
facetname:'jst.web',version:'3.0'
facetname:'jst.java',version:'1.7'
facetname:'wst.jsdt.web',version:'1.0'
}
}
}

3.接下来在项目上右击 -> configure -> convert to Gradle project

4.再次在项目上右击 -> Gradle -> Refresh All

5.如果没有 web.xml 文件的话, 再右击项目 -> Java EE Tools -> Generate Deployment Descriptor Stub

6.最后看下效果如何, 在 WebContent 下新建 index.jsp 里面随便写点什么, 然后项目上右击 -> Run As -> Run on Server

如果成功显示的话那么就一切 OK 了.

㈣ gradle可以编译android源码吗

方法/步骤

1
(可以省略)通过cmd命令行下载gradle源码:
git clone https://github.com/spring-guides/gs-gradle-android.git
2
下载最新的gradle安装包,地址:
http://gradle.org/downloads
点击下载二进制文件

3
解压到d盘,路径为:D:\gradle-2.4
4
打开“计算机”-“右键”-“属性”-“更改设置”-“高级”-“环境变量”,
在系统变量中,点击新建,属性名为GRADLE_HOME,属性值为"D:\gradle-2.4"

5
打开“计算机”-“右键”-“属性”-“更改设置”-“高级”-“环境变量”,
在系统变量中,找到Path,将";D:\gradle-2.4\bin"加入到Path中

6
打开cmd命令行,执行gradle,如果出现如图所示,则说明gradle安装成功

7
打开cmd命令行,进入android工程目录,找到build.gradle文件,在目录执行执行
gradle build
既可开始使用gradle打包apk,在成功后会在同目录生成build文件夹

㈤ android gradle 怎么用本地包

千锋扣丁学堂Android开发为您解答:
------------------------------------------------------------
Gradle 2.2.1
------------------------------------------------------------
Build time: 2014-11-24 09:45:35 UTC
Build number: none
Revision:
Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013 JVM: 1.7.0_60 (Oracle Corporation 24.60-b09) OS:
Mac OS X 10.9.5 x86_64
2、接着执行 ./gradlew clean
执行这个命令会去下载Gradle的一些依赖,下载成功并编译通过时会看到如下信息:
:app:clean UP-TO-DATE
:extras:ShimmerAndroid:clean UP-TO-DATE BUILD SUCCESSFUL
3、最后执行 ./gradlew build
这个命令会直接编译并生成相应的apk文件,如果看到如下字样就代表build成功了
BUILD SUCCESSFUL

Total time: 31.456 secs
紧接着在 9GAG/app/build/outputs/apk 目录下会看到类似于app-debug-unaligned.apk, app-release-unsigned.apk等,看名字应该能理解意思,unaligned代表没有进行zip优化的,unsigned代表没有签名的。然后就可以直接安装apk查看运行效果了。
以上是我个人习惯的一种阅读第三方源码的习惯,关于上面提到的一些gradle命令大家应该还不理解,后面会一一进行说明的。
导入Android Studio
但是如果你还是想导入Android Studio的话,下面就来简单介绍下导入Studio的方法以及一些注意事项。
1、选择File->Import Project, 选择本地9GAG项目的目录

2、第一次依然会下载Gradle,其实自己在命令行已经下载过了,但是这次依然还要下载一次(依然要翻墙),可能是个bug,接下来的版本中可能会修复。

3、导入之后你需要注意以下几个地方
每个Mole下的 build.gradle 下的buildToolsVersion,即9GAG/app/build.gradle 和 9GAG/extras/ShimmerAndroid/build.gradle , 可以打开 SDK Manager 查看本地你安装的 SDK Build-tools, 如下图,如果相应版本没有安装请先下载

项目根目录下的 build.gradle 下gradle插件的版本,如 9GAG/build.gradle 的内容:
classpath ‘com.android.tools.build:gradle:1.0.0’

Android Studio 1.0必须指定gradle插件1.0的版本
Gradle Wrapper的版本,在 9GAG/gradle/wrapper/gralde-wrapper.properties 文件里有如下内容:
#Thu Dec 18 16:02:24 CST 2014
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
上述内容制定了gradle的版本使用2.2.1,在Studio中如果你手动改了gradle插件的版本会有提示要不要更新Gradle Wrapper的版本。
如果以上几个地方确定版本是ok的,那么导入Android Studio应该没有问题,有些老的项目可能gradle版本比较老,仍然在使用一些老的语法,如果编译还通不过参考Android Studio系列教程四–Gradle基础更改成最新的语法。
Gradle常用命令
上面大家接触了一些命令如 ./gradlew -v ./gradlew clean ./gradlew build, 这里注意是./gradlew, ./代表当前目录,gradlew代表 gradle wrapper,意思是gradle的一层包装,大家可以理解为在这个项目本地就封装了gradle,即gradle wrapper, 在9GAG/gradle/wrapper/gralde-wrapper.properties文件中声明了它指向的目录和版本。只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。
理解了gradle wrapper的概念,下面一些常用命令也就容易理解了。

./gradlew -v 版本号

./gradlew clean 清除9GAG/app目录下的build文件夹

./gradlew build 检查依赖并编译打包

这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 **assemble**, 如

./gradlew assembleDebug 编译并打Debug包

./gradlew assembleRelease 编译并打Release的包

除此之外,assemble还可以和proctFlavors结合使用,具体在下一篇多渠道打包进一步解释。

./gradlew installRelease Release模式打包并安装

./gradlew uninstallRelease 卸载Release模式包

下一篇来介绍用Gradle进行方便的多渠道打包,以及项目中完整的Gradle配置。

㈥ 如何 gradle build

1. 为什么选择Gradle?

2. 简单入门
2.1 使用Intellij Idea创建gradle项目
首先在Idea中启用Gradle支持:Settings->Plugins: Gradle
然后创建一个gradle项目或模块,会发现目录结构和maven的很像,其中build.gradle是gradle的配置文件,类似于maven中pom.xml文件,以下是build.gradle的简单示例:
apply plugin: 'java'

group = 'org.yousharp'
version = '1.0-SNAPSHOT'

sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
mavenCentral()
maven { url "repo.maven.apache.org/maven2" }
}
dependencies {
compile group: 'com.google.guava', name: 'guava', version:'17.0'
compile group: 'redis.clients', name: 'jedis', version:'2.6.0'
testCompile group: 'junit', name: 'junit', version:'4.11'
}

插件(plugin):是gradle的一种扩展,gradle预定义了很多插件,常见的如java插件、war插件等;java插件中定义了一些有用的task,如编译源码、执行单元测试、生成jar包、约定默认的目录结构等; repositories定义仓库,dependencies定义项目的依赖,比maven的XML定义更简洁;
那么,如何编译、测试,以及运行gradle的项目呢?
刚才说到java插件预定义了很多task,其中就包括编译、测试、生成jar包等task,可以在命令行通过 $ gradle tasks 查看项目已定义的所有task以及含义,如java插件中常用的task有:
+ assemble: 编译
+ build:编译并执行测试
+ clean:删除build目录
+ jar: 生成jar包
+ test:执行单元测试

2.2 将Java项目从maven迁移到gradle
如何将一个java项目从maven迁移到gradle呢?gradle集成了一个很方便的插件:Build Init Plugin,使用这个插件可以很方便地创建一个新的gradle项目,或者将其它类型的项目转换为gradle项目。
要将maven项目转换为gradle项目,只需要在项目的pom文件所在的目录下执行以下命令:
$ gradle init --type pom

上面的命令会根据pom文件自动生成gradle项目所需的文件和配置,然后以gradle项目重新导入即可。

㈦ 请教,gradle编译spring5源码时报错,怎么回事呢命令 .\gradlew cleanIdea:spring-oxm:compileTestJava

这不是有报错吗。。。

㈧ 如何看IDEA编译一个工程的命令行

2.1 使用Intellij Idea创建gradle项目
首先在Idea中启用Gradle支持:Settings->Plugins: Gradle
然后创建一个gradle项目或模块,会发现目录结构和maven的很像,其中build.gradle是gradle的配置文件,类似于maven中pom.xml文件,以下是build.gradle的简单示例:
apply plugin: 'java'

group = 'org.yousharp'
version = '1.0-SNAPSHOT'

sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
mavenCentral()
maven { url "repo.maven.apache.org/maven2" }
}
dependencies {
compile group: 'com.google.guava', name: 'guava', version:'17.0'
compile group: 'redis.clients', name: 'jedis', version:'2.6.0'

㈨ 如何使用gradle构建工具打包groovy脚本成jar文件

准备工作安装 gradle, groovy。
要使用gradle的groovy plugin 来打包groovy 脚本,项目结构。
目录 含义
src/main/java Java 代码
src/main/resources Java需要的资源文件
src/main/groovy Groovy代码,也可以包含Java代码
src/test/java Java 测试代码
src/test/resources 测试需要的资源文件
src/test/groovy Groovy测试需要的资源文件
src/sourceSet/java Java代码源
src/sourceSet/resources 资源文件源
src/sourceSet/groovy Groovy代码源
我们只需要编译打包groovy脚本 所以只需要创建 src/main/groovy目录结构。例子:
gradle_groovy_archive项目 结构是:
gradle_groovy_archive

创建helloWorld.groovy脚本,代码如下:
package hello
println 'Gradle compile groovy'

创建Gradle构建文件:
apply plugin: 'groovy'
apply plugin: 'maven'

group = 'com.hello'
archiveBaseName = 'hello'
version = '0.1-SNAPSHOT'

defaultTasks 'clean', 'jar'

configurations {
deployerJars
}

repositories {
mavenCentral()
}

dependencies {
//使用本地groovy环境
groovy localGroovy()
//groovy group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.6'
compile fileTree( dir: 'lib', include: ['*.jar'])

deployerJars 'org.apache.maven.wagon:wagon-webdav-jackrabbit:1.0-beta-7'
}

sourceSets {
main {
groovy {
srcDir 'src/main/groovy'
}
}
}

uploadArchives {
repositories.mavenDeployer {
uniqueVersion = false
configuration = configurations.deployerJars
repository(id : repositoryId, url : repositoryUrl) {
authentication (userName : 'deployment', password : 'deployment')
proxy()
}
}
}

创建构建文件属性文件:
//根据不同情况修改
repositoryId=ND
repositoryUrl=ND
systemProp.http.proxyHost=ND
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=ND
systemProp.http.proxyPassword=ND

在命令行中 敲 gradle 运行,会自动运行 defaultTasks,clean 和 jar,会把 所有groovy下的脚本打成jar包。

阅读全文

与gradle命令编译相关的资料

热点内容
单片机串行通信有什么好处 浏览:319
游戏开发程序员书籍 浏览:841
pdf中图片修改 浏览:268
汇编编译后 浏览:473
php和java整合 浏览:829
js中执行php代码 浏览:440
国产单片机厂商 浏览:57
苹果手机怎么设置不更新app软件 浏览:284
转行当程序员如何 浏览:492
苹果id怎么验证app 浏览:864
查看手机命令 浏览:953
抖音反编译地址 浏览:225
如何加密软件oppoa5 浏览:233
java从入门到精通明日科技 浏览:94
拆解汽车解压视频 浏览:597
新版百度云解压缩 浏览:592
android上下拉刷新 浏览:880
centos可执行文件反编译 浏览:839
林清玄pdf 浏览:271
黑马程序员java基础 浏览:284