博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gradle 多项目构建
阅读量:6687 次
发布时间:2019-06-25

本文共 3453 字,大约阅读时间需要 11 分钟。

Gradle可以轻松处理各种大小规模的项目。小项目由一个单一的构建文件和一个源代码树构成。 大项目可以将其拆分成更小的,相互依赖的模块,以便更容易理解。

多项目构建的结构特征:

  • 在项目的根目录或主目录中都有一个settings.gradle文件。
  • 根目录或主目录都有一个build.gradle文件。
  • 具有自己的build.gradle构建文件的子目录。

设置:

allprojects 针对所有的子项目和本身起作用,全局设置项。

allprojects {   group = 'MavenRoot'   version = '0.0.1-SNAPSHOT'}

subprojects针对所有的子项目起作用。

subprojects{	apply plugin: 'java'	apply plugin: 'eclipse'}

项目依赖:

// MavenView中添加dependencies {   compile project(':MavenCore')   compile project(':MavenCommon')}

如果有平级项目之间的依赖MavenView中 settings.gradle:

includeFlat 'MavenCommon'

includeFlat 'MavenCore'

以Maven的多模块项目为例:

在MavenRoot下创建settings.gradle和build.gradle

在settings.gradle 内写子项目:

rootProject.name = 'MavenRoot'include 'MavenCore'include 'MavenCommon'include 'MavenView'

验证子项目:

Colsure cl = {task -> println "I'm $task.project.name"}task hello2 << clproject(":MavenCore"){	task hello2 << cl}project(":MavenView"){	task hello2{		doLast cl	}}

 

 在 allProjects中使用:

allprojects {   group = 'MavenRoot'   version = '0.0.1-SNAPSHOT'      task hello2{   	description="hello2"   	doLast {   		task -> println "$task.project.name"   	}   }}

 

subProjects中使用:

此时hello2不能再定义task,因同名task只能有一个,因此一旦上面定义了task后面只能对task进行配置

// sub project setttingsubprojects{	apply plugin: 'java'	apply plugin: 'eclipse'	hello2{		doLast{			task -> println "$task.project.name"		}	}}

 

 或者: 

hello2.doLast{    task -> println "$task.project.name"}

 

指定单独运行:

project(":MavenView").hello2.doLast{	println "I'm  the special one..."}

 

 以上子集的这几个方法必须建立在allprojects中已经构建此hello2任务。

子集建立build.gradle,如果allprojects中已经对子集声明此方法,则子集中不可再构建。

task hello3{	doLast {	     println "i 'm $task.name"	}}

 

执行报错:> Could not get unknown property 'task' for task ':MavenCore:hello3' of type org

.gradle.api.DefaultTask.

 因 $默认指向的是project的成员变量,因此task无法找到。

需要切换内部指向为task。

task hello3{	doLast {		task -> println "i 'm $task.name"	}}

 

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 以上为多项目之间的关系说明。

Gradle多项目整合:

  • 如何在Gradle中使用其他模块在一个模块中;
  • 使用Gradle打包多个模块(输出为:jar,war);
  • 在Gradle Tomcat插件上运行Web应用程序;

 之前建立了HelloGradle的web应用,下面再建立一个CommonGradle和一个RootGradle。

其中RootGradle为容器,整合CommonGradle和HelloGradle,helloGradle引用CommonGradle。

CommonGradle和RootGradle的建立:

右键->new -> other ->gradle -> gradle project ->[projectName] ->options [local installation diractory][Gradle User home]

->OK

 在RootGradle的setting.gradle下创建子项目

rootProject.name = 'RootGradle'include 'CommonGradle'include 'HelloGradle'project(':CommonGradle').projectDir = new File(settingsDir, '../CommonGradle')project(':HelloGradle').projectDir = new File(settingsDir, '../HelloGradle')

 

 build.gradle下创建内容:

apply plugin: 'java'apply plugin: 'eclipse'// In this section you declare where to find the dependencies of your projectrepositories {	mavenLocal()	maven{ 		url 'http://maven.aliyun.com/nexus/content/groups/public/'	}	mavenCentral()    jcenter()}allprojects{	group "com.hg"	version "1.0.0-SNAPSHOT"}def artifactId="RootGradle"dependencies {    compile 'com.google.guava:guava:20.0'    testCompile 'junit:junit:4.12'    compile project(":HelloGradle")    compile project(":CommonGradle")}

 

HelloGradle的build.gradle中创建:

将CommonGradle中的类用在HelloGradle中

dependencies {    compile project(':CommonGradle')}

 

CommonGradle的build.gradle中创建:

apply plugin: 'java'apply plugin: 'eclipse'

 

在cmd->RootGradle中

gradle tomcatStart

在文件的build的libs下就有打包成的jar和war文件。

 

转载于:https://www.cnblogs.com/DennyZhao/p/7736694.html

你可能感兴趣的文章
【linux】arm mm内存管理
查看>>
HBase原理和安装
查看>>
Java基本数据类型及字节
查看>>
dom元素的各种位置和大小
查看>>
递归裴波那契数列
查看>>
ARM技术论坛集合
查看>>
select * 比select column快很多奇怪案例分析
查看>>
fedora22 安装fcitx 输入法
查看>>
不要使用jQuery触发原生事件
查看>>
简单直接__痴左线
查看>>
Android开发学习笔记
查看>>
CentOS中nginx负载均衡和反向代理的搭建
查看>>
正则表达式用法
查看>>
ROS语音交互(四)接入图灵语义理解
查看>>
基础才是重中之重~Emit动态构建方法(参数和返回值)
查看>>
类型别名
查看>>
第十六章 模板与泛型编程
查看>>
Could not load the sandbox dll from the ASP.NET project
查看>>
Java : Spring基础 AOP
查看>>
几个危险的linux命令(转)
查看>>