gradle(转)

 

 

一、声明dependency

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

Java代码 

 

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

   以上代码表明:

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

Java代码 

 

  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) 使用缩略形式,如:

  

Java代码 

 

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

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

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

Java代码 

 

  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类

Java代码 

 

  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.   
  12.     public static final String COMPILE_CONFIGURATION_NAME = "compile";  
  13.     public static final String RUNTIME_CONFIGURATION_NAME = "runtime";  
  14.     public static final String TEST_RUNTIME_CONFIGURATION_NAME = "testRuntime";  
  15.     public static final String TEST_COMPILE_CONFIGURATION_NAME = "testCompile";  
  16.   
  17.     public void apply(Project project) {  
  18.         project.getPlugins().apply(JavaBasePlugin.class);  
  19.   
  20.         JavaPluginConvention javaConvention = project.getConvention().getPlugin(JavaPluginConvention.class);  
  21.         project.getConvention().getPlugins().put("embeddedJavaProject", new EmbeddableJavaProjectImpl(javaConvention));  
  22.   
  23.         configureSourceSets(javaConvention);  
  24.         configureConfigurations(project);  
  25.   
  26.         configureJavaDoc(javaConvention);  
  27.         configureTest(project, javaConvention);  
  28.         configureArchives(project, javaConvention);  
  29.         configureBuild(project);  
  30.     }  
  31. }  

 

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

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

Java代码 

 

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

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

Java代码 

 

  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

时间: 2024-09-15 11:37:42

gradle(转)的相关文章

com.android.tools.build:gradle:2.0.0-alpha3 build errors

当Android studio 编译时间过长且出现问题比如下面的提示: java.exe'' finished with non-zero exit value 3. 此时就要检查一下跟目录下面的build.gradle里面的 dependencies { classpath 'com.android.tools.build:grade:2.0.0-alpha3' // NOTE: Do not place your application dependencies here; they bel

Elcipse安装gradle插件

参考:             http://www.gradle.org/docs/current/userguide/installation.html (1)下载Gradle 官网下载www.gradle.org/get-started (2)将GRADLE_HOME/bin/加入$PATH. 将解压,得到gradle-1.8,然后拷贝到/usr:                                                 输入sudo  cp -r gradle-1.

执行gradle build一直报错

问题描述 执行gradle build一直报错 一直报错 multi-project-build:core:unspecified 跟项目配置文件: build.gradle subprojects { apply plugin: 'java' apply plugin: 'eclipse' repositories { mavenCentral() } } settings.gradle include 'app' include 'core' 子项目app的: apply plugin: '

gradle 引用同工作空间下的工程

问题描述 gradle 引用同工作空间下的工程 在不通过仓库的情况下,gradle 如何引用同一个workspace下的工程?注:问题类似于maven的依赖管理:如果本地workspace没有就去远程仓库拉取.如果有,则直接使用.开发的时候比较方便.

maven + sonar, gradle + sonar

sonar installation and configuration Download sonar http://downloads.sonarsource.com/sonarqube/ Decompression sonar package for installation Set sonar environment variable SONAR_HOME: "D:\sonarqube" PATH: "%SONAR_HOME%\bin\windows-x86-64&qu

gradle使用文档

1     基本介绍 1.1 前言 gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML. gradle能够完成构建.测试.发布和其他诸如软件打包.生成注释文档等等功能. 其特点包括: l  使用简单 l  支持多方式依赖管理 l  与ant.maven和ivy有良好的相容,支持轻松地从其他构建方式迁移到gradle上 l  支持局部构建 l  支持多工程的构建 l  免费开源  

Gradle目录解析

Gradle目录解析 Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具. Gradle这个工具集成了构建,测试,发布和其他,比如软件打包,生成注释文档等功能. 之前eclipse使用ant进行软件的构建功能,需要配置一大堆的xml,但是在gradle中就不需要了. 目前主流的打包方式有ant,maven,gradle.gradle是近几年发展起来的自动化构建工具,解决ant构建上的繁琐代码. 比如在ant上发布多渠道的包,你需要自

Android中 Gradle “xxx” project refresh failed问题

环境(2014.03.13最新): 问题: Gradle "xxx" project refresh failed 描述: 这是一个很常见的问题, 比如之前可以使用, 新建工作, 或重新启动, 则不可使用, 显示无法构建, Gradle无法使用 解决: 清除缓存, 重启Gradle, File->Invalidate Caches / Restart... ; 即可; Gradle是构建Android项目的必备程序, Android Studio的基础, 有很多优势, 使构建变得

基于Rational Team Concert和Gradle对项目进行持续构建与部署

引言 持续集成作为一种软件开发中的最佳实践被越来越多的项目组采用.因为项目在被持续的构建,团队成员可以更早地发现代码中被引入的错误,也更为方便的定位到错误是由谁在什么时候提交的哪一部分代码中引入的.由于持续地产出可部署的部件,虽然这些部件没有实现所有的功能,但却是可部署的,这让项目开发的整个过程变得更为可控.同时持续集成与测试驱动开发等其他软件开发最佳实践的结合更能代码健壮性和可靠性.下面我们将开始介绍如何搭建这样一个包含对项目进行持续构建与部署的持续集成环境. 下一代项目构建工具 Gradle

在Eclipse下利用gradle构建系统

简介:构建系统时候常常要用到 Ant, Maven 等工具,对于初学者来说,它们还是过于复杂,上手还 是需要时间的.本文将向读者介绍一种全新的构建项目的方式 gradle,它简单.上手快,能大大节省项 目的时间和成本. 在 eclipse 下利用 gradle 构建系统 基本开发环境 操作系统:本教程使用的为 Windows Vista Enterprise, 如果您的系统是 Linux 的,请选择下载对 应版本的其他工具,包括开发工具.Java EE 服务器.Apache Ant.SoapUI