一、声明dependency

    在build.gradle文件编辑以下代码:

  1. apply plugin: 'java'
  2. repositories {
  3. mavenCentral()
  4. }
  5. dependencies {
  6. compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
  7. testCompile group: 'junit', name: 'junit', version: '4.+'
  8. }

以上代码表明:

(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 ,如

  1. dependencies {
  2. 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>
  3. }

(2) 使用缩略形式,如:

  1. dependencies {
  2. compile 'org.hibernate:hibernate-core:3.6.7.Final'
  3. }

四、如何将相关jar包添加到classpath?

可以通过buildscript{}中添加依赖的方式,将相关jar包加入到classpath中,如:

  1. buildscript {
  2. repositories {
  3. mavenCentral()
  4. }
  5. dependencies {
  6. classpath group: 'commons-codec', name: 'commons-codec', version: '1.2'
  7. }
  8. }

就将commons-codec-1.2.jar加入到classpath中了

五、如何定义task 任务?

六、gradle plugin的本质?plugin是什么?可要用它来做什么?

gradle的plugin其实就是一个实现了Plugin接口的一个普通类,这个类必须要实现apply方法来执行相关的操作。如:在org.gradle.api.plugins包下,定义个JavaPlugin类

  1. public class JavaPlugin implements Plugin<Project> {
  2. public static final String PROCESS_RESOURCES_TASK_NAME = "processResources";
  3. public static final String CLASSES_TASK_NAME = "classes";
  4. public static final String COMPILE_JAVA_TASK_NAME = "compileJava";
  5. public static final String PROCESS_TEST_RESOURCES_TASK_NAME = "processTestResources";
  6. public static final String TEST_CLASSES_TASK_NAME = "testClasses";
  7. public static final String COMPILE_TEST_JAVA_TASK_NAME = "compileTestJava";
  8. public static final String TEST_TASK_NAME = "test";
  9. public static final String JAR_TASK_NAME = "jar";
  10. public static final String JAVADOC_TASK_NAME = "javadoc";
  11. public static final String COMPILE_CONFIGURATION_NAME = "compile";
  12. public static final String RUNTIME_CONFIGURATION_NAME = "runtime";
  13. public static final String TEST_RUNTIME_CONFIGURATION_NAME = "testRuntime";
  14. public static final String TEST_COMPILE_CONFIGURATION_NAME = "testCompile";
  15. public void apply(Project project) {
  16. project.getPlugins().apply(JavaBasePlugin.class);
  17. JavaPluginConvention javaConvention = project.getConvention().getPlugin(JavaPluginConvention.class);
  18. project.getConvention().getPlugins().put("embeddedJavaProject", new EmbeddableJavaProjectImpl(javaConvention));
  19. configureSourceSets(javaConvention);
  20. configureConfigurations(project);
  21. configureJavaDoc(javaConvention);
  22. configureTest(project, javaConvention);
  23. configureArchives(project, javaConvention);
  24. configureBuild(project);
  25. }
  26. }

在定义类后需要对这个plugin类进行相关配置,只有配置之后才能被以“apply plugin:‘java’”形式使用。

首先需要在src\META-INF\目录下建立一个gradle-plugins文件夹,然后在该文件夹下建立一个名为“插件名.properties”文件,如java.properties,文件的内容为定义的plugin类的实现路径,具体内容如下:

  1. implementation-class=org.gradle.api.plugins.JavaPlugin

通过以上配置,我们就可以在build.gradle中明目张胆的使用:

  1. 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(转)的更多相关文章

  1. Gradle配置APK自动签名完整流程

    转载请注明出处:http://www.cnblogs.com/LT5505/p/6256683.html 一.生成签名 1.命令行生成签名,输入命令keytool -genkey -v -keysto ...

  2. gradle学习笔记(1)

    1. 安装     (1) 下载最新gradle压缩包,解压到某处.地址是:Gradle web site:     (2) 添加环境变量:             1) 变量名:GRADLE_HOM ...

  3. Gradle 实现 Android 多渠道定制化打包

    Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...

  4. 解决 Could not find com.android.tools.build:gradle 问题

    今天拉同事最新的代码,编译时老是报如下错误: Error:Could not find com.android.tools.build:gradle:2.2.0.Searched in the fol ...

  5. React Native Android gradle下载慢问题解决

    很多人会遇到 初次运行 react-native run android的时候 gradle下载极慢,甚至会失败的问题 如下图 实际上这个问题好解决的 首先 把对应版本的gradle下载到本地任意一个 ...

  6. Android studio使用gradle动态构建APP(不同的包,不同的icon、label)

    最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP.下面介绍使用方法: 首 ...

  7. 对Maven、gradle、svn、spring 3.0 fragment、git的想法

    1.Maven Maven可以构建项目,采用pom方式配置主项目和其他需要引用的项目.同时可结合spring3.0的新特性web  fragment. 从现实出发,特别是对于管理不到位,程序员整体素质 ...

  8. 项目自动化建构工具gradle 入门1——输出helloWorld

    先来一个简单的例子,4个步骤: 1.进入D:\work\gradle\java 目录  ,您电脑没这目录? 那辛苦自己一级一级建立起来吧 新建文件build.gradle,文件内容是: apply p ...

  9. 用IntelliJ IDEA创建Gradle项目简单入门

    Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...

  10. 通过Gradle为APK瘦身

    引言:在过去几年中,APK 文件的大小曾急剧增长态势.一般来说,其原因如下:Android开发者获取了更多的依赖库,添加了更多的密度,Apps 增加了更多的功能.但实际上我们应该让APKs 尽可能的小 ...

随机推荐

  1. Swift 编程语言新手教程

    今天在网上看到一篇很好的教程,分享给大家 原文地址:http://gashero.iteye.com/blog/2075324 文件夹 1   简单介绍 2   Swift入门 3   简单值 4   ...

  2. Java生成文件

    Java生成文件 1.说明 以文件路径作为參数,推断该文件是否存在,若不存在就创建文件.并输出文件路径 2.实现源代码 /** * @Title:BuildFile.java * @Package:c ...

  3. learning - Haskell AND Lisp vs. Haskell OR Lisp - Programmers Stack Exchange

    learning - Haskell AND Lisp vs. Haskell OR Lisp - Programmers Stack Exchange Haskell AND Lisp vs. Ha ...

  4. POI数据下载器

    偶尔用点儿POI数据,所以写了一个下载器.用到的东西还真不少. 功能点 +编写翻页脚本 +CSharp与JS交互 +POI数据转换json +CSharp的json序列化类 +CSharp读写json ...

  5. zoj3747(递推dp)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5170 题意:给n个士兵排队,每个士兵三种G.R.P可选,求至少有m个 ...

  6. POJ 1703:Find them, Catch them(并用正确的设置检查)

    Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 30702   Accepted: ...

  7. HDU 3639 Hawk-and-Chicken(良好的沟通)

    HDU 3639 Hawk-and-Chicken 题目链接 题意:就是在一个有向图上,满足传递关系,比方a->b, b->c,那么c能够得到2的支持,问得到支持最大的是谁,而且输出这些人 ...

  8. 读书笔记:《梦断代码Dreaming in Code》

    读书笔记:<梦断代码Dreaming in Code> 拿到<梦断代码>书后,一口气翻了一遍,然后又用了3天时间仔细读了一遍,也不禁掩卷长叹一声,做软件难.虽难,仍要继续走下去 ...

  9. HDU3977(斐波那契数列模n的循环节长度)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3977 题意:求斐波那契数列模p的循环节长度,注意p最大是2*10^9,但是它的素因子小于10^6. 分析过 ...

  10. 第1次实验——NPC问题(回溯算法、聚类分析)

    题目:八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即随意两个皇后都不能处于同一 ...