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:\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.

 

 

 

时间: 2024-09-21 16:52:46

Gradle多项目配置的一个demo的相关文章

Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)_php实例

本文实例讲述了Zend Framework入门之环境配置及第一个Hello World程序.分享给大家供大家参考,具体如下: 第一步:确认你的PHP环境: 1.请PHPer确认你的PHP版本是否在5.2.0以上..如果不是的话..请更新到5.2.0,否则.Zend Framework 好像用不了..我自己有试过. 遇到过这样的问题..所以请你们自己测试一下..PHP源码最新版下载地址为:http://www.php.net/downloads.php. 2.你的PHP环境配置好了之后,请打开ph

CYQ.Data.ProjectTool 项目配置工具发布(包源码)

前言: 一直被网友催,说要更新下 CYQ.Data 的枚举生成器,这工具自从V4.5版本之后,就没再发布过新版本,事实上,我也写了V4.55版本的枚举生成器,主体是感觉不太满意,没多大变化,所以一直没发布. 我们看一下V4.55的枚举生成器界面,相比V4.5好看了一点点,但还不太满意,感觉使用上仍有些不方便.   对使用理念的提升: 自从折腾微博粉丝精灵软件近2年左右,对软件的有了进一步的认识,自己都感觉使用不方便的东西,怎么能拿的出手让用户使用,所以,虽然有新版本,也没发布.   VS 插件的

VC项目配置基础 .

一.IDE基础配置 1.字体 VC6中"Tools→Options→Format→Font"配置字体:VC2005中"工具→选项→环境→字体和颜色"配置字体. 编写代码一般采用等宽字体,等宽点阵(位图)字体,相对矢量字体而言具有兼容性好和显示清晰的优点.常用的编程等宽字体包括Fixedsys(VC6和notepad御用字体).Consolas.YaHei Mono. VC6默认可选字体只有Fixedsys和Terminal,可通过修改注册表来改字体,在HKEY_CU

关于项目配置jboss服务器的问题

问题描述 关于项目配置jboss服务器的问题 想为一个项目创建jboss服务器,但是图上却没有选项,不知道怎么办,在eclipse>window>preferences下也找不到jboss选项,有没有知道的人帮我看看哪里没做到的 解决方案 jboss服务器配置jboss项目问题总结linux下配置jboss Web服务器 解决方案二: 那么的eclipse 的问题.eclipse jboss 解决方案三: 为Eclipse安装jboss server插件! 新手还是MyEclipse吧,方便简

VC项目配置详解

一.IDE基础配置   1. 字体 VC6中"Tools→Options→Format→Font"配置字体:VC2005中"工具→选项→环境→字体和颜色"配置字体. 编写代码一般采用等宽字体,等宽点阵(位图)字体,相对矢量字体而言具有兼容性好和显示清晰的优点.常用的编程等宽字体包括Fixedsys(VC6和notepad御用字体).Consolas.YaHei Mono. VC6默认可选字体只有Fixedsys和Terminal,可通过修改注册表来改字体,在HKEY

j2ee项目配置数据源的问题

问题描述 j2ee项目配置数据源的问题 最近在边学边做j2ee项目,过程中遇到一个问题.框架是springMVC+spring+hibernate 教程中配置数据源的方式,都是通过在spring配置文件或者hibernate配置文件中已经配置好了数据源. 但实际是,我们在开发的时候根本不知道客户数据库的类型更不用说账号和密码了,这样一来,我部署的时候是要把项目打成war包然后放到tomcat上的,这样数据源岂不是没法用? 或者说有没有什么办法在部署的时候去配置数据源?比如提供一个jsp页面,专门

VC项目配置基础 (VC6.0 和VC2005)

一.预处理宏 1. 通用宏 VC6.0 中: Project Setting à C/C++ à Preprocessor definitions VC2005 中: 项目属性 à 配置属性 à C/C++ à 预处理器定义   WIN32 :指明是 Window 32 位系统的编译器,一般用作平台识别. _MBCS/_UNICODE :指明该工程使用的字符集(多字节字符集 /UNICODE ). 在 VC6.0 的 "Project Setting à C/C++ à Project Opti

【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能

在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先写一个登录权限过滤类--LoginFilter类实现Filter接口 1 package com.agen.util; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.Fi

Asp.Net MVC3 简单入门第一季(五) 通过Asp.Net MVC的区域功能实现将多个MVC项目部署到一个站点

引子 本文将主要演示怎么将多个Asp.Net MVC项目部署到一个IIS站点中的例子,主要使用的是Asp.Net MVC提供的区域的功能. Asp.Net MVC提供了区域的功能,可以很方便的为大型的网站划分区域.可以让我们的项目不至于太复杂而导致管理混乱,有了区域后,每个模块的页面都放入相应的区域内进行管理很方便.而随着项目的复杂,每个开发人员开发的模块呢也可能是一个完整的解决方案,而他要开发的UI项目呢只是主站点项目的一个区域,而如果把所有的UI项目放到一个UI项目,在团队开发时就不很方便了