Gradle-03 项目结构及基本语法

Gradle 项目目录结构

  1. src/* 源码及测试目录
  • src/main/java 正式代码目录
  • src/main/resouces 放置正式文件目录,
  • src/test/java 放置单元测试目录(项目编译打包时不会编译这部分)
  • src/test/resources 放置单元测试目录
  • src/main/webapp web项目,放置页面元素,比如:js,css,img,jsp,html等等
  1. build/** ,打包编译目录
  • build/classes/** 源码编译文件
  • build/libs/** 项目打成jar包
  • resources/** 配置文件
  • tmp/** 临时文件

Grovvy基础语法

  1. 定义普通变量
//groovy可以省略括号
//def 是弱类型,grovy会自动根据情况来给变量赋予对应的类型
def s = "xianmin"
  1. 定义集合
//list,单引号,双引号都可以
def mylist = ['a','b']
//1.1 添加元素
list << 'c'
//1.2 取出元素
println list.get(2)

//2. 定义map
def map = ['key1':'value1','key2':'value2']
//2.1 添加键值对
map.key3='value3'
//2.2 打印出key3的值
println map.get('key3')

闭包

  1. 闭包
  • 闭包其实就是一段代码块,在gradle中,主要把闭包当参数来使用,常见参数是一个方法
  1. 定义方法
  • 无参数闭包
//1.定义一个闭包
def b1 = {
	println "hello b1"
}
//2.定义方法,方法里需要闭包类型的参数
def method1(Closure closure){
	closure()
}
//3. 调用方法
method1(b1)
  • 带参闭包
//1. 定义带参闭包
def +b2 = {
	v ->
			println "hello ${v}"

}
//2 定义方法,方法里需要闭包类型的参数
def method2(Closure closure){
	closure("xiaoma")}
//3 调用
method2(b2)

Gradle配置文件介绍

build.gradle

  1. 通用配置文件
  • dependencies gradle工程的所有jar包都在 dependencies属性内放置,它至少有三个基本元素,group name version 每个jar包必须指明作用域,dependencies常见属性 ,每个属性对应一个方法

    • testCompile 表示包在测试的时候起作用,如junit
    • compile 编译运行都起作用,如spring-web,spring-context等核心框架
    • provided 只在编译阶段起作用,运行阶段不起作用,如javax.servlet
  • repositories 指定所使用的仓库,仓库放置顺序即获取jar包顺序,可以指定多个仓库,一般第一个为本地仓库即优先从本地查找,若没有在从其他仓库查找

    • mavenLocal(),jar包从本地获取
    • mavenCentral(),jar包从中央仓库获取
  1. 插件(apply)
  • apply plugin: 'java' 该插件将项目编译成普通java项目
  • apply plugin: 'war' 该插件用与web项目,会将项目

仓库配置

  • idea中默认放置jar包的本地仓库Gradle user home :.gradle
  • 将maven本地仓库路径放置到GRADLE_USER_HOME 环境变量中

单个项目配置

  1. 在build.gradle中添加以下仓库信息
    • 外部的repositories声明使用的仓库地址,优先从本地查找依赖,没找到再从阿里镜像源查找,都找不到则从中央仓库找
    • 外部的dependencies声明所需的依赖jar包,此处的包是作用与Java项目的JVM中 需要指定生命周期
    • buildscript中的依赖会配置在属于gradle的JVM中内部 配置repositoriesdependencies
buildscript {
    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
    }
    dependencies {
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

//...

repositories {
    mavenLocal()
    maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
    maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
    mavenCentral()
}
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile group: 'org.springframework', name: 'spring-context', version: '5.2.4.RELEASE'
    compile group: 'org.springframework', name: 'spring-core', version: '5.2.4.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc', version: '5.2.4.RELEASE'


扩展

  1. 配置tomcat,Deployment添加web项目的启动方式后,就可以启动项目了

web项目

单应用

  • 在build.gradle添加插件apply plugin: 'war'

模块拆分与聚合

  1. 普通模块转变为web模块,只需在对应模块下的 build.gradle 中添加插件apply plugin: 'war'
  2. 所有模块信息,在父工程的setting.gradle 中可以看见
  3. 通用依赖。在父工程的build.gradle中将公共依赖或插件添加到allprojects 中,各子模块只需要配置自己需要的jar包依赖或插件
  4. 模块间引用,如service模块需要引用dao模块,在service模块的build.gradle
//compile为作用域
//project()参数为引用模块名称,格式 project(":模块名称")
dependencies{
	compile project(":gradle_dao")
}
原文地址:https://www.cnblogs.com/luckyCoder/p/12732468.html