Gradle多项目配置的一个demo

简介: ParentProject├─build.gradle├─settings.gradle├─libs├─subProject1├────────────build.gradle├────────────src/java├────────────conf├─subProject2├────────────build.

 

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:\java\gradle\graldeCopyConfig\src\test\java\EqualDemoTest.java, G:\java\gradle\graldeCopyConfig\src\test\java\config\test.xml]
[G:\java\gradle\graldeCopyConfig\build\classes\test\EqualDemoTest.class, G:\java\gradle\graldeCopyConfig\build\classes\test\config\test.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.

 

 

 

相关文章
|
7月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
405 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
7月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
728 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
11月前
|
Java Android开发 Windows
玩转安卓之配置gradle-8.2.1
为安卓开发配置Gradle 8.2.1,包括下载和解压Gradle、配置环境变量、修改配置文件以增加国内镜像,以及在Android Studio中配置Gradle和JDK的过程。
850 0
玩转安卓之配置gradle-8.2.1
|
Java 数据库连接 数据库
在Maven或者Gradle构建配置中添加了必要的依赖
在Maven或者Gradle构建配置中添加了必要的依赖
149 1
|
Java Maven 开发者
gradle项目对比maven项目的目录架构以及对gradle wrapper的理解
gradle项目对比maven项目的目录架构以及对gradle wrapper的理解
158 0
|
Java Spring Maven
gradle 配置指南
在`build.gradle`中配置Gradle仓库,首先添加阿里云公共仓库
|
Java API Maven
Gradle 自动化项目构建-Gradle 核心之 Project
Gradle 自动化项目构建-Gradle 核心之 Project
275 0
|
XML Java Android开发
gradle配置
gradle配置
213 0

热门文章

最新文章

推荐镜像

更多