jenkins gradle 配置配置不成功,求助贴

& &随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成。对于这种多系统、多项目的情况,很多构建工具都已经提供了不错的支持,像maven、ant。Gradle除了借鉴了ant或者maven的继承的方式定义子项目,也提供了一种更为方便的集中配置的方式,大大减少了构建带来的复杂度。除此之外,Gradle还提供了清晰的Project树模型来映射多项目的组织结构。下面,让我们了解一下如何使用Gradle构建多项目。
1. 多项目定义及结构
&在Gradle中,使用文件settings.gradle定义当前项目的子项目,格式如下所示:&
include&'sub-project1',&'sub-project2',&'sub-project3',
它表示在当前的项目下建立三个子项目,分别为'sub-project1', 'sub-project2', 'sub-project3'。默认情况下,每个子项目的名称对应着当前操作系统目录下的一个子目录。
当Gradle运行时,会根据settings.gradle的配置情况,构建一个单根节点的项目树。其中的每个子节点代表一个项目(Project),每个项目都有一个唯一的路径表示它在当前树中的位置,路径的定义方式类似:
Root:&Level1-子节点&:&Level2-子节点&:&Level3-子节点&
也可以简写成“:&Level1-子节点&:&Level2-子节点&:&Level3-子节点&”。借助这种路径的定义方式,我们可以在build.gradle去访问不同的子项目。另外,对于单项目,实际上是一种特殊的、只存在根节点,没有子节点的项目树。
例如,我们有个产品A,包括以下几个组件core,web,mobile。分别代表&核心逻辑&、&网站&、“手机客户端”。 因为每个组件是独立的部分,这个时候最好我们能定义多个子项目,让每个子项目分别管理自己的构建。于是我们可以这样定义A/settings.gradle
include&'core',&'web',&'mobile'
按照之前描述的,core组件对应A/core目录,web组件对应A/web目录,mobile组件对应A/mobile目录。接下来,我们就可以在每个组件内部,定义build.gradle负责管理当前组件的构建。
Gradle提供了一个内建的task 'gradle projects',可以 帮助我们查看当前项目所包含的子项目,下面让我们看看gradle projects的输出结果:
$&gradle&projects
------------------------------------------------------------
Root&project
------------------------------------------------------------
Root&project&'A'
+---&Project&':core'
+---&Project&':mobile'
\---&Project&':web
结果一目了然,首先是Root级别的项目A,然后是A下面的子项目'core', 'mobile', 'mobile'
最终的文件以及目录结构如下所示:
&&&--settings.gradle
&&&--build.gradle
&&&&&--build.gradle
&&&&&&--build.gradle
&&&--mobile
&&&&&&--build.gradle
如果你不喜欢这种默认的结构,也可以按照如下方式定义子项目的名称和物理目录结构:
include(':core)
project(':core').projectDir&=&new&File(settingsDir,&'core-xxx')&
include(':web)
project(':web').projectDir&=&new&File(settingsDir,&'web-xxx')&
include(':mobile)
project(':mobile').projectDir&=&new&File(settingsDir,&'mobile-xxx')&
在这个例子中,子项目core实际上对应的物理目录为A/core-xxx,web实际上对应的是A/web-xxx,mobile也类似。
虽然我们更改了子项目的物理目录结构,不过由于我们在build.gradle中使用的是类似 “ :&SubProject&”的方式访问对应的子项目,所以目录结构的改变,对我们Gradle的构建脚本并不会产生影响。
接下来,考虑一个更复杂的情况,随着产品的发展,mobile这个组件慢慢的划分成了Android和IOS两个部分,这时我们只需要在目录A/mobile下定义新的settings.gradle,并加入如下部分:
include&'android',&'ios'
现在,mobile组件下将存在两个新的子项目 &android&和&ios&
于是,这时候'gradle projects'的目录结构就变成
&&&--settings.gradle
&&&&&&--build.gradle
&&&&&&--build.gradle
&&&--mobile
&&&&&&--settings.gradle
&&&&&&--ios
&&&&&&&&--build.gradle
&&&&&&--android
&&&&&&&&--build.gradle
2. 多项目的集中配置
对于大多数构建工具,对于子项目的配置,都是基于继承的方式。Gradle除了提供继承的方式来设置子项目,还提供了另外一种集中的配置方式,方便我们统一管理子项目的信息。下面看一个例子,打开A/build.gradle,输入如下部分:
allprojects&{
&&&&task&hello&&&&{task&-&&println&&I'm&$task.project.name&&}
subprojects&{
&&&&hello&&&&{println&&-&I&am&the&sub&project&of&A&}
project(':core').hello&&&&{
&&&&&&println&&-&I'm&the&core&component&and&provide&service&for&other&parts.&
对于上面所示的代码,已经很表意了:
allprojects{xxx} &这段代码表示,对于所有的project,Gradle都将定义一个名称是hello的Task&{&println &I'm $task.&} 。
subprojects{xxxx}的这段代码表示,对于所有的子project,将在名称为hello的Task上追加Action {println &- I am the sub project of A&}
注意:关于Task和Action的关系,请看我之前写的本系列的第一部分。
project(':core')的这段代码表示,对于名称为core的project,将在名称为hello的Task上追加Action&{&println &- I'm the core component and provide service for other parts.&&}
3. 多项目的Task执行
之前我们已经了解了多项目的结构以及如何通过路径去访问子项目。现在让我们看看如何使用Gradle来执行多项目。
在Gradle中,当在当前项目上执行gradle &Task&时,gradle会遍历当前项目以及其所有的子项目,依次执行所有的同名Task,注意:子项目的遍历顺序并不是按照setting.gradle中的定义顺序,而是按照子项目的首字母排列顺序。
基于刚才的例子,如果我们在根目录下,执行gradle hello,那么所有子项目的“hello” Task都会被执行。如果我们在mobile目录下执行gradle hello,那么mobile、android以及IOS的“hello”&Task都会被执行。关于该例子的运行结果,这里就不贴出来了。大家如果有兴趣的话可以试试。
这篇文章主要描述了使用Gradle管理多项目的知识。相比Ant或者Maven,Gradle提供了更灵活的配置方式。更重要的是,Gradle还提供了很多内建的Task帮助我们查看或者管理项目。这次就先聊到这里,下次我们来看看Gradle的生命周期。
本文已收录于以下专栏:
相关文章推荐
我们了解到一个典型的多模块项目需要有一个根模块项目以及模块描述文件(默认为settings.gradle),下面我们将通过一个 多项目示例 来对多模块项目的结构以及脚本进行更深入的了解。如果要让 Gr...
参考文档:gradle的官方userguide.pdf文档的chapter 55和chapter 56.
gradle的多模块或项目开发一定不会比maven差,在我看来!大的项目分成多个模块来开发是常...
示例程序拥有两个模块:
core模块包含一些通用的组件,它们能够被程序的其他模块使用。例子中,只包含一个类:MessageService类返回‘Hello World!’字符串。该模块有两个...
概述上一节,我们说了Eclipse如何安装Gradle的插件,以达到对Gradle的支持。这里再次说一下为什么我们需要熟悉Gradle构建工具,主要原因就是很多开源项目现在都在改用Gradle作为构建...
感谢gradle完全的文档。开始完全没想过新建项目会弄我一天时间,都说gradle构建项目简单,我现在回复他们呵呵。
gradle是个非常复杂的工具,从他的完整包80M和72章官方文档就可以看出一二。...
Gradle多项目构建并将项目导入到Eclipse
1. 创建项目
首先创建项目,名称为 test:
mkdir test && cd test
gradle init
这时候的项目结构如下:
在使用android studio 新建 项目的时候,会发现一直无法下载 gradle-0.8.3.jar(也有可能是其他版本),如下:
Gradle: Download: http://repo1...
基于以前自己都是直接用Intellij IDEA构建单个Gradle项目,但是在在实际中往往是一个Gradle项目中包含了几个子gradle项目,由于使用Intellij并没有直接构造一个gradle...
Maven工具,以及maven项目的创建将不做科普。学者自学;
1.最外层的项目pom.xml(jar包应用不在赘述):项目名称:peit
一个peit项目中包含了一个appapi项目
他的最新文章
讲师:李江龙
讲师:司徒正美
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Gradle配置 - 简书
Gradle配置
复制后粘贴到AndroidStudio(IDE)中覆盖掉 build.gradle 文件,然后点击同步按钮即可。
修复以下兼容(本次更新日)
androidannotations 3.2框架最新版本
android Studio 1.0 RC2
错误: Could not find the AndroidManifest.xml file, going up from path
//打开app build.gradle文件加入以下代码
AA注解Apt配置
arguments {
androidManifestFile variant.processResources.manifestFile
resourcePackageName AppPackageName
Could not find property ‘processResources’ 1.
//打开全局文件 build.gradle加入以下代码
classpath 'com.android.tools.build:gradle:1.0.0-rc1'
classpath 'com.android.tools.build:gradle:0.14.2'
build.gradle完整源码
第一步骤,打开app moder中的 build.gradle
packagingOptions {
exclude 'META-INF/LICENSE.txt'
.so文件的导入
task copyNativeLibs(type: Copy) {
from fileTree(dir: 'libs', include: 'armeabi/.so') into 'build/lib'
from fileTree(dir: 'libs', include: 'armeabi-v7a/.so') into 'build/lib'
from fileTree(dir: 'libs', include: 'x86/.so') into 'build/lib'
dependencies {
compile fileTree(dir: 'libs', include: ['.jar'])
compile 'com.android.support:appcompat-v7:21.0.0'
//框架系列
apt 'org.androidannotations:androidannotations:3.2+' // AA注解库1
compile 'org.androidannotations:androidannotations-api:3.2+' // AA注解库2
// //请求系列
// compile 'com.loopj.android:android-async-http:1.4.5+' //Android异步Http请求
// //动画系列
// compile 'com.nineoldandroids:library:2.4.0+' //Nine Old Androids 将Android 3.0(Honeycomb)所有动画API兼容到Android1.0
// //缓存系列
// compile 'com.squareup.picasso:picasso:2.3.3' //picasso图片缓存
// //控件系列
//// compile 'com.github.dmytrodanylyk.android-process-button:library:1.0.1' //按钮上显示进度状态。(最低需要andriud版本10)
//// compile 'de.hdodenhof:circleimageview:1.1.1' //CircleImageView实现带边框圆形头像.
//// compile ' //NumberProgressBar文字进度跟随进度条展示。(最低需要andriud版本10)
//// compile 'info.hoang8f:fbutton:1.0.5' //FButton FButton的是Android与“平板UI”的概念自定义按钮。(最低需要andriud版本9)
//// compile 'pl.droidsonroids.gif:android-gif-drawable:1.0.+' //用jni实现的,
//// compile 'com.nhaarman.supertooltips:library:3.0.+' //supertooltips 带动画效果的Tips显示
//// compile 'org.holoeverywhere:slidingmenu:1.4.2+' //SlidingMenu (依赖actiomnBar)滑出式菜单,通过拖动屏幕边缘滑出菜单.
// //工具系列
// compile 'com.alibaba:fastjson:+' //fastjson 目前比较快的json解析库
第二步骤,打开项目空间全局文件 build.gradle 复制以下
buildscript {
repositories {
mavenCentral()
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
classpath 'com.android.tools.build:gradle:0.14.2'
allprojects {
repositories {
mavenCentral()
dependencies 代码块里面的jar包配置是根据自己的需要而定的,没用的jar包配置或者android系统版本不支持的jar包建议注释掉,以免冲突无法构建。
永泰庄码农
Gradle配置最佳实践 本文会不定期更新,推荐watch下项目。如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request。本文意在分享作者在实践中掌握的关于gradle的一些技巧。 本文固定连接:https://github....
Dalvik/1.4.0(LU;Android2.3.6;HUAWEIY325-T00Build/HUAWEIY325-T00)Built-inmusicMicroMessenger/6.2.2.53_r5f7cf84.580Dalvik/1.6.0(L...
摘要: 每周一次,深入学习Android教程,TeachCourse今天带来的一篇关于Android Studio构建文件build.gradle的相关配置,重点学习几个方面的内容:1、applicationId和package属性值的关系,2、怎么配置安全的自定义签名,3...
本文会不定期更新,推荐watch下项目。如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request。本文意在分享作者在实践中掌握的关于gradle的一些技巧。本文固定连接:/tianzhijie...
Gradle是一个项目构建工具,类似Maven,可用于管理项目内部组件的依赖关系,完成自动化构建。因为Android Studio生成的Android项目默认使用gradle进行构建,因此大多数Android程序员都要跟它打交道,今天这篇文章主要想厘清Android开发中与...
我想,我一定不是突然变成了一个诗人。其实,我把脑汁绞尽,也处心积虑了多时。我写了一首诗,要递给你看。我以为我是勇敢,可竟把纸条塞给了胃酸。我写了一首诗,只藏给了自己看。肤浅也好,高尚也罢。
昨天还在为LL不理睬而失落,今天闹腾一下,被他逗乐就气消了。 有时候终于知道为什么爱情中认真的那一方会输,因为多考虑了对方,而委屈自己。 其实我也知道自私一点就会多爱自己多幸福! 人生没什么大不了,爱不爱都没关系,只要在一起坦诚开心就好。 谁都想拥有一份真挚的感情,无须过多...
随着电商平台的发展,深圳云集品也抓住了这样的机遇,投身于“跨境电商”之中,那么对于我们来说,加入有什么好处呢?靠谱吗? 深圳云集品创立于2014年,2015年正式投入到运营当中,发展迅速,现正稳步发展之中。因其独特的经营模式,有着源源不断的用户,不断强化造血功能,实现健康的...
1.先执行main函数,main内部会调用UIApplicationMain函数 2.UIApplicationMain函数里面做了什么事情: 1&创建UIApplication对象 2&创建UIApplication的delegate对象—–PYAppDelegate 3...
导语:放几张沙发就是软装?看了楼下的装修才知道什么叫软装!更多装修知识上成都百合居装饰官网! 业内一直都有句话,包括我家在装修的时候装修师傅也跟我说过很多回,原话太长了,概括下来就是:三分硬装七分软装。而我对老师傅说的话我也没不以为然,不就是软装嘛,我买的沙发茶几不就是软装...先贴上一段配置文件
buildTypes {
// 不显示Log
buildConfigField &boolean&, &LOG_DEBUG&, &false&
minifyEnabled true
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'
signingConfig signingConfigs.release
},gradle多渠道打包,网上有很多资料,很容易,但是在使用上面的这段配置的时候,使用gradle assembleRelease打包的时候,会提示好多warning,然后就会打包失败,报异常,java.io.IOException: Please correct the above warnings first,这个异常,如果做过混淆打包的人,应该会遇到过,虽然是警告,也会导致打包失败,我也是上网搜了好多这个问题的解决方法,大致就是使用-dontwarn xx.xxx.**对警告的地方做处理,就是对引入的第三方jar包做处理,这个不是本文重点,我要说的是怎么不让它出现这些警告然后又能打包成功,解决办法就是把上面的配置文件的注释掉的部分注释点就行了,只要一句signingConfig signingConfigs.release,就OK了。到底是为什么呢,先来一句一句分析。proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'当时我想如果不混淆不就可以了,不混淆的话就不会报那些warning,我就先把这句给注释了,然而还是会进行混淆,报warning,然后上面就剩三句配置了,1minifyEnabled true,2 zipAlignEnabled true 3 shrinkResources true,先分析第一句 minifyEnabled true,设置了这句就会在打包的时候,就会对代码进行混淆处理,把这句注释掉就可以了,然后分析第二句 zipAlignEnabled true,这句是对zipAlign进行优化 zipAlign,Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。因此,这种方式能够让应用程序和整个系统运行得更快。我们强烈推荐在新的和已经发布的程序上使用zipalign工具来得到优化后的版本——即使你的程序是在老版本的Android平台下开发的,然后第三句shrinkResources true,这句配置是移除无用的resource文件。
总结,如果项目比较大,又没有要求让混淆代码,可以在用gradle多渠道打包的时候,把minifyEnabled true去掉就OK了。
本文已收录于以下专栏:
相关文章推荐
使用gradle打包的时候出现好多警告,如何忽略大部分的警告呢,使用如下配置即可.使用方法在根项目的build.gradle文件增加如下配置即可tasks.withType(JavaCompile) ...
用gradle build命令时,经常由于lint错误终止,而这些错误又经常是第三方库中的,我们可以跳过这些错误,继续编译。在build.gradle中加入如下代码:
毫无疑问,现在Gradle已经成为java世界最火的构建工具,风头已经盖过了冗余的ant,落后的maven。Gradle是以Groovy语言编写的一套构建脚本的DSL,由于Groovy语法的优雅,所以...
gradle打包过程错误汇总
android签名混淆打包后出现的各种问题最近看一些关于混淆应用的文章,于是在自己的应用中引入了混淆文件proguard-android.txt
设置使用混淆:// 不显示Log
buildConf...
gradle 工程依赖 打包 配置文件
gradle在执行build的时候想跳过test task,那么可以使用-x命令
-x参数用来排除不需要执行的任务
$ gradle build -x test
:compileJava U...
方式1:用命令带上参数
mvn install -Dmaven.test.skip=true
方式2:在pom.xml里面配置
使用Gradle3.0的时候报错:
Gradle sync failed: Cause: org.gradle.api.internal.tasks.DefaultTaskInputs$TaskIn...
之前执行gradlew assembleRelease时是正常的,不知道是否是因为改动了gradle版本还是因为升级了android studio,反正就是之后执行gradlew assembleRe...
他的最新文章
讲师:李江龙
讲师:司徒正美
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Android开发【08-05求助贴】gradle 更新问题急求助!谢谢!【android开发吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:119,811贴子:
Android开发【08-05求助贴】gradle 更新问题急求助!谢谢!收藏
初学android开发,使用的是android studio工具,现在在自己机子上碰见这问题,按照上面说的更新,但是下载界面一直都不动???该怎么办????谢谢!
猪八戒网android开发专业团队,承接软件开发,软件外包和定制等各种大型软件类业务;项目进度实时把控,优质服务,高保障可靠交付!
是该用第三个方法吧?然后就是下载界面一直不动
登录百度帐号推荐应用求教吧内大神一个内网服务器使用gradle编译的问题?【androidstudio吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:9,333贴子:
求教吧内大神一个内网服务器使用gradle编译的问题?收藏
我们的编译服务器不能联网,现在又要用androidStudio开发android项目,我把项目提交到服务器后遇到各种问题,下载了离线gradle包安装上是可以用了,但是android项目build.gradle里面都有这么个配置项:buildscript {
repositories {
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
// NOTE: Do not place your applicati they belong
// in the individual module build.gradle files
}}我自己电脑能联网所以可以去jcenter下载这个com.android.tools.build:gradle:2.1.2,但是服务器不能联网啊,每次编译都会连jcenetr所以会报错:信息如下FAILURE: Build failed with an exception.* What went wrong:A problem occurred configuring root project 'MyTest1'.& Could not resolve all dependencies for configuration ':classpath'.
& Could not download gradle.jar (com.android.tools.build:gradle:2.1.2)
& Could not get resource 'ild/gradle/2.1.2/gradle-2.1.2.jar'.
& Could not HEAD 'radle/2.1.2/gradle-2.1.2.jar'.
& 这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。请问这种问题一般怎么解决啊?其实我项目没有远程依赖库,不用连接jcenter的,但是不连接的话gradle又报错。
阿里云云市场提供功能丰富的发者必备软件,帮助用户快速简便的操作和管理云主机服务器以及虚拟主机的管理系统
勾选离线工作
gradle没有网络就是废的,你以为没有什么依赖,但是gradle有很多重要的包都要下载的,没网络就去用ant吧,或者Eclipse,
登录百度帐号推荐应用

我要回帖

更多关于 jenkins gradle 配置 的文章

 

随机推荐