gradle(转)
一、声明dependency
在build.gradle文件编辑以下代码:
- apply plugin: 'java'
- repositories {
- mavenCentral()
- }
- dependencies {
- compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
- testCompile group: 'junit', name: 'junit', version: '4.+'
- }
以上代码表明:
(1) compile group:需要依赖Hibernate core 3.6.7.Final来编辑项目的源码,在编译时系统会自动将hibernate的依赖加入进来
(2)testCompile group:测试代码需要junit4以上的版本来编译
二、常用的依赖
(1)compile:编译生产代码的依赖环境,即src/main/下
(2)runtime:生产代码运行时的依赖(包含编译生产代码时的依赖)
(3)testCompile:编译测试代码的依赖环境,即src/test下
(4)testRuntime:测试代码运行时的依赖(包含编译测试代码时的依赖)
三、依赖的配置
通常情况下有两种配置:
(1)使用 “group:name
:version
”形式来定义dependencies ,如
- dependencies {
- compile group: <span class="hl-string">'org.hibernate'</span>, name: <span class="hl-string">'hibernate-core'</span>, version: <span class="hl-string">'3.6.7.Final'</span>
- }
(2) 使用缩略形式,如:
- dependencies {
- compile 'org.hibernate:hibernate-core:3.6.7.Final'
- }
四、如何将相关jar包添加到classpath?
可以通过buildscript{}中添加依赖的方式,将相关jar包加入到classpath中,如:
- buildscript {
- repositories {
- mavenCentral()
- }
- dependencies {
- classpath group: 'commons-codec', name: 'commons-codec', version: '1.2'
- }
- }
就将commons-codec-1.2.jar加入到classpath中了
五、如何定义task 任务?
六、gradle plugin的本质?plugin是什么?可要用它来做什么?
gradle的plugin其实就是一个实现了Plugin接口的一个普通类,这个类必须要实现apply方法来执行相关的操作。如:在org.gradle.api.plugins包下,定义个JavaPlugin类
- public class JavaPlugin implements Plugin<Project> {
- public static final String PROCESS_RESOURCES_TASK_NAME = "processResources";
- public static final String CLASSES_TASK_NAME = "classes";
- public static final String COMPILE_JAVA_TASK_NAME = "compileJava";
- public static final String PROCESS_TEST_RESOURCES_TASK_NAME = "processTestResources";
- public static final String TEST_CLASSES_TASK_NAME = "testClasses";
- public static final String COMPILE_TEST_JAVA_TASK_NAME = "compileTestJava";
- public static final String TEST_TASK_NAME = "test";
- public static final String JAR_TASK_NAME = "jar";
- public static final String JAVADOC_TASK_NAME = "javadoc";
- public static final String COMPILE_CONFIGURATION_NAME = "compile";
- public static final String RUNTIME_CONFIGURATION_NAME = "runtime";
- public static final String TEST_RUNTIME_CONFIGURATION_NAME = "testRuntime";
- public static final String TEST_COMPILE_CONFIGURATION_NAME = "testCompile";
- public void apply(Project project) {
- project.getPlugins().apply(JavaBasePlugin.class);
- JavaPluginConvention javaConvention = project.getConvention().getPlugin(JavaPluginConvention.class);
- project.getConvention().getPlugins().put("embeddedJavaProject", new EmbeddableJavaProjectImpl(javaConvention));
- configureSourceSets(javaConvention);
- configureConfigurations(project);
- configureJavaDoc(javaConvention);
- configureTest(project, javaConvention);
- configureArchives(project, javaConvention);
- configureBuild(project);
- }
- }
在定义类后需要对这个plugin类进行相关配置,只有配置之后才能被以“apply plugin:‘java’”形式使用。
首先需要在src\META-INF\目录下建立一个gradle-plugins文件夹,然后在该文件夹下建立一个名为“插件名.properties”文件,如java.properties,文件的内容为定义的plugin类的实现路径,具体内容如下:
- implementation-class=org.gradle.api.plugins.JavaPlugin
通过以上配置,我们就可以在build.gradle中明目张胆的使用:
- apply plugin: 'java'
以后有机会将会详细来剖析 javaplugin这一gradle base plugin
plugin通常可以用来做以下事情:
- Add tasks to the project (e.g. compile, test)
- Pre-configure added tasks with useful defaults.
- Add dependency configurations to the project
- Add new properties and methods to existing type via extensions.
七、编写plugin的方法
通常有三种方法:
(1)在buildscript中编写plugin,这样编写的plugin只能用在当前项目中,不能被重用
(2)buildsrc中编写plugin。在“rootProjectDir/buildSrc/src/main/groovy ”目录中用groovy编写plugin,
在buildSrc目录下编写 build.gradle文件来对这个plugin进行说明
(3)独立的项目。将plugin写成一个独立的项目,然后发布成一个jar包供多个项目来使用。这个jar包中也可以包含多个task任务。
http://hougbin.iteye.com/blog/1459159
1、能够识别第一层的依赖jar包和传递依赖(transitive dependency)
2、jar包冲突解决
(1)使用gradle强制配置一级依赖
(2)强制配置传递依赖
http://stackoverflow.com/questions/27056733/change-gradle-mavencentral-url-to-my-repo/27058232#27058232
gradle(转)的更多相关文章
- Gradle配置APK自动签名完整流程
转载请注明出处:http://www.cnblogs.com/LT5505/p/6256683.html 一.生成签名 1.命令行生成签名,输入命令keytool -genkey -v -keysto ...
- gradle学习笔记(1)
1. 安装 (1) 下载最新gradle压缩包,解压到某处.地址是:Gradle web site: (2) 添加环境变量: 1) 变量名:GRADLE_HOM ...
- Gradle 实现 Android 多渠道定制化打包
Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...
- 解决 Could not find com.android.tools.build:gradle 问题
今天拉同事最新的代码,编译时老是报如下错误: Error:Could not find com.android.tools.build:gradle:2.2.0.Searched in the fol ...
- React Native Android gradle下载慢问题解决
很多人会遇到 初次运行 react-native run android的时候 gradle下载极慢,甚至会失败的问题 如下图 实际上这个问题好解决的 首先 把对应版本的gradle下载到本地任意一个 ...
- Android studio使用gradle动态构建APP(不同的包,不同的icon、label)
最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP.下面介绍使用方法: 首 ...
- 对Maven、gradle、svn、spring 3.0 fragment、git的想法
1.Maven Maven可以构建项目,采用pom方式配置主项目和其他需要引用的项目.同时可结合spring3.0的新特性web fragment. 从现实出发,特别是对于管理不到位,程序员整体素质 ...
- 项目自动化建构工具gradle 入门1——输出helloWorld
先来一个简单的例子,4个步骤: 1.进入D:\work\gradle\java 目录 ,您电脑没这目录? 那辛苦自己一级一级建立起来吧 新建文件build.gradle,文件内容是: apply p ...
- 用IntelliJ IDEA创建Gradle项目简单入门
Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...
- 通过Gradle为APK瘦身
引言:在过去几年中,APK 文件的大小曾急剧增长态势.一般来说,其原因如下:Android开发者获取了更多的依赖库,添加了更多的密度,Apps 增加了更多的功能.但实际上我们应该让APKs 尽可能的小 ...
随机推荐
- 关于PHP的内置服务器的使用
今天刚开始正式学习PHP(之前有一点了解),推荐学习的网站是w3school.一开始不知道tomcat服务器不支持PHP脚本,直接把.php文件放到tomcat里面去运行,结果嵌入的php代码段没有什 ...
- HDU 4597 Play Game 2013 ACM-ICPC吉林通化全国邀请赛H题
九野的博客,转载请注明出处: http://blog.csdn.net/acmmmm/article/details/10833941 题意:给定T个测试数据,下面有2副牌,每副n张,每张都有一个分 ...
- mongodb时间戳转换成格式化时间戳
db.pay_order.find({"id":"5332336532"},{"tradeNo":true,"status&quo ...
- Javascript新手集中营
javascript是世界上最流行的编程语言,也许没有之一,看看github,stackoverflow上面的开源项目和问答就可略知一二.它可以用来开发web app.服务器.或者联合nati ...
- 解决NGINX的WORDPRESS伪静态规则失效的问题
解决NGINX的WORDPRESS伪静态规则失效的问题 前两天搬到了EMSVPS的PR线路上,用上了最新的WDCP2.0管理面板,支持多用户管理(我们几个合租的VPS,最需要这个功能了),感觉很不错, ...
- Python学习笔记22:Django下载并安装
Django它是一个开源Web应用程序框架.由Python书面. 通过MVC软件设计模式,这种模式M,视图V和控制器C. 它最初是一个数字新闻内容为主的网站已经发展到管理劳伦斯出版集团.那是,CMS( ...
- hdu4908(中位数)
传送门:BestCoder Sequence 题意:给一个序列,里面是1-N的排列,给出m,问以m为中位数的奇数长度的序列个数. 分析:先找出m的位置,再记录左边比m大的状态,记录右边比m大的状态,使 ...
- 【剑指offer】约瑟夫环问题
转载请注明出处:http://blog.csdn.net/ns_code/article/details/27957407 题目描写叙述: 每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小 ...
- jQuery UI 是建立在 jQuery JavaScript 库上的一组用户界面交互、特效、小部件及主题
jQuery UI 是建立在 jQuery JavaScript 库上的一组用户界面交互.特效.小部件及主题.无论您是创建高度交互的 Web 应用程序还是仅仅向窗体控件添加一个日期选择器,jQuery ...
- hdu1028(整数划分问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028 整数划分问题 整数划分 --- 一个老生长谈的问题: 描述 整数划分是一个经典的问题.请写一个程 ...