• 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’”形式使用。

    首先需要在srcMETA-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

  • 相关阅读:
    LCT
    Knights0.
    Beautiful Sequence
    Mole and Abandoned Mine
    防御准备
    最小生成树计数
    Miners
    朝暮(枚举基准 容斥)
    Dynamic Rankings(整体二分)
    BZOJ 3875 Ahoi2014 骑士游戏
  • 原文地址:https://www.cnblogs.com/softidea/p/4518529.html
Copyright © 2020-2023  润新知