zoukankan      html  css  js  c++  java
  • Gradle多项目配置的一个demo

    ParentProject
    ├─build.gradle
    ├─settings.gradle
    ├─libs
    ├─subProject1
    ├────────────build.gradle
    ├────────────src/java
    ├────────────conf
    ├─subProject2
    ├────────────build.gradle
    ├────────────src/java
    ├────────────conf
    ├─subProject3
    ├────────────build.gradle
    ├────────────src/java
    ├────────────conf

    ParentProject

    目录下的build.gradle

    //所有项目公用资源:IDE和库
    allprojects {
        repositories {
            mavenLocal()
        }
    }
    
    //所有子项目公用:源码和单元测试代码定义
    subprojects {
    println "======================================"
    println "${rootProject.projectDir}/libs"
    println "======================================"
        apply plugin: 'java'
        sourceSets {
            main {
                java {
                    srcDir 'src/java'
                }
            }
            test {
                java {
                    srcDir 'src/test'
                }
            }
         }
         
        dependencies {
            compile fileTree(dir: "${rootProject.projectDir}/liblicense",include: '**/*.jar')
        }
     }


    目录下的settings.gradle

    include 'subProject1'
    include 'subProject2'
    include 'subProject3'
    //或include 'subProject1','subProject2','subProject3'

    subProject1下的build.gradle

    project(':subProject1') {
        dependencies {
        }
    } 

    subProject2下的build.gradle

    project(':subProject2') {
        dependencies {
            compile project(':subProject1')
        }
    }

    subProject3下的build.gradle

    project(':subProject3') {
        dependencies {
            compile project(':subProject1')
        }
    }

    graadle中的一个copy操作:
    目录结构:

    │  build.gradle
    │  gradlew
    │  gradlew.bat
    │  list.txt
    │  settings.gradle
    │  
    ├─.gradle
    │  └─2.8
    │      └─taskArtifacts
    │              cache.properties
    │              cache.properties.lock
    │              fileHashes.bin
    │              fileSnapshots.bin
    │              outputFileStates.bin
    │              taskArtifacts.bin
    │              
    ├─build
    │  ├─libs
    │  │      gradle.jar
    │  │      
    │  └─tmp
    │      └─jar
    │              MANIFEST.MF
    │              
    └─graldeCopyConfig
        ├─build
        │  ├─classes
        │  │  ├─main
        │  │  │      EqualDemo.class
        │  │  │      
        │  │  └─test
        │  │      │  EqualDemoTest.class
        │  │      │  
        │  │      └─config
        │  │              test.xml
        │  │              
        │  ├─dependency-cache
        │  ├─libs
        │  │      graldeCopyConfig.jar
        │  │      
        │  ├─reports
        │  │  └─tests
        │  │      │  index.html
        │  │      │  
        │  │      ├─classes
        │  │      │      EqualDemoTest.html
        │  │      │      
        │  │      ├─css
        │  │      │      base-style.css
        │  │      │      style.css
        │  │      │      
        │  │      ├─js
        │  │      │      report.js
        │  │      │      
        │  │      └─packages
        │  │              default-package.html
        │  │              
        │  ├─test-results
        │  │  │  TEST-EqualDemoTest.xml
        │  │  │  
        │  │  └─binary
        │  │      └─test
        │  │              output.bin
        │  │              output.bin.idx
        │  │              results.bin
        │  │              
        │  └─tmp
        │      ├─compileJava
        │      │  └─emptySourcePathRef
        │      ├─compileTestJava
        │      │  └─emptySourcePathRef
        │      └─jar
        │              MANIFEST.MF
        │              
        └─src
            ├─main
            │  ├─java
            │  │      EqualDemo.java
            │  │      
            │  └─resources
            └─test
                ├─java
                │  │  EqualDemoTest.java
                │  │  
                │  └─config
                │          test.xml
                │          
                └─sources

    build.gradle

    /*
     * This build file was auto generated by running the Gradle 'init' task
     * by 'MyWorld' at '16-2-22 下午11:33' with Gradle 2.8
     *
     * This generated file contains a commented-out sample Java project to get you started.
     * For more details take a look at the Java Quickstart chapter in the Gradle
     * user guide available at https://docs.gradle.org/2.8/userguide/tutorial_java_projects.html
     */
    subprojects {
    // Apply the java plugin to add support for Java
        apply plugin: 'java'
        sourceCompatibility = 1.6
        targetCompatibility = 1.6
    
        tasks.withType(JavaCompile) {
            options.encoding = "UTF-8"
        }
    
        sourceSets {
            main {
                java {
                    srcDirs = ['src/main/java']
                }
            }
            test {
                java {
                    srcDirs = ['src/test/java']
                }
            }
        }
    
    // In this section you declare where to find the dependencies of your project
        repositories {
            // Use 'jcenter' for resolving your dependencies.
            // You can declare any Maven/Ivy/file repository here.
            jcenter()
        }
    
        dependencies {
            // The production code uses the SLF4J logging API at compile time
            compile 'org.slf4j:slf4j-api:1.7.12'
    
            // Declare the dependency for your favourite test framework you want to use in your tests.
            // TestNG is also supported by the Gradle Test task. Just change the
            // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
            // 'test.useTestNG()' to your build script.
            testCompile 'junit:junit:4.12'
        }
    
        task copyConfig(type: Copy) {
            from 'src/test/java'
            into 'build/classes/test'
            include '**/*.xml'
            println fileTree('src/test/java').files
            println fileTree('build/classes/test').files
        }
        test.dependsOn copyConfig
    }
    
    project(':graldeCopyConfig') {
        // In this section you declare the dependencies for your production and test code
        dependencies {
        }
    }

    settings.gradle

    /*
     * This settings file was auto generated by the Gradle buildInit task
     * by 'MyWorld' at '16-2-22 下午11:33' with Gradle 2.8
     *
     * The settings file is used to specify which projects to include in your build.
     * In a single project build this file can be empty or even removed.
     *
     * Detailed information about configuring a multi-project build in Gradle can be found
     * in the user guide at https://docs.gradle.org/2.8/userguide/multi_project_builds.html
     */
    include 'graldeCopyConfig'

    gradle build的执行结果

    [G:javagradlegraldeCopyConfigsrc	estjavaEqualDemoTest.java, G:javagradlegraldeCopyConfigsrc	estjavaconfig	est.xml]
    [G:javagradlegraldeCopyConfiguildclasses	estEqualDemoTest.class, G:javagradlegraldeCopyConfiguildclasses	estconfig	est.xml]
    :graldeCopyConfig:compileJava UP-TO-DATE
    :graldeCopyConfig:processResources UP-TO-DATE
    :graldeCopyConfig:classes UP-TO-DATE
    :graldeCopyConfig:jar UP-TO-DATE
    :graldeCopyConfig:assemble UP-TO-DATE
    :graldeCopyConfig:copyConfig UP-TO-DATE
    :graldeCopyConfig:compileTestJava UP-TO-DATE
    :graldeCopyConfig:processTestResources UP-TO-DATE
    :graldeCopyConfig:testClasses UP-TO-DATE
    :graldeCopyConfig:test UP-TO-DATE
    :graldeCopyConfig:check UP-TO-DATE
    :graldeCopyConfig:build UP-TO-DATE
    
    BUILD SUCCESSFUL
    
    Total time: 5.196 secs

    8.3. Dependency configurations

    In Gradle dependencies are grouped into configurations. A configuration is simply a named set of dependencies. We will refer to them as dependency configurations. You can use them to declare the external dependencies of your project. As we will see later, they are also used to declare the publications of your project.

    The Java plugin defines a number of standard configurations. These configurations represent the classpaths that the Java plugin uses. Some are listed below, and you can find more details inTable 23.5, “Java plugin - dependency configurations”.

    compile

    The dependencies required to compile the production source of the project.

    runtime

    The dependencies required by the production classes at runtime. By default, also includes the compile time dependencies.

    testCompile

    The dependencies required to compile the test source of the project. By default, also includes the compiled production classes and the compile time dependencies.

    testRuntime

    The dependencies required to run the tests. By default, also includes the compile, runtime and test compile dependencies.

    Various plugins add further standard configurations. You can also define your own custom configurations to use in your build. Please see Section 52.3, “Dependency configurations” for the details of defining and customizing dependency configurations.

     
  • 相关阅读:
    三剑客之Grep家族
    Linux默认权限命令:umask
    Linux特殊权限管理SUID|SGID|STICKY
    zabbix的web界面出现乱码解决方案
    启动zabbix-server/agent报错:cannot open "/etc/zabbix/logs/zabbix_server.log": [13] Permission denied
    Zabbix-Agent配置文件详解
    使用yum安装报错:[Errno 256] No more mirrors to try
    grep/sed/awk命令查看指定时间段的日志
    数据库SQL练习(一):数据查询
    连接数据库报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  • 原文地址:https://www.cnblogs.com/softidea/p/5133741.html
Copyright © 2011-2022 走看看