Contents
  1. 1. 如何配置Gradle:
  2. 2. 用Gradle 打包项目
  3. 3. Gradle 构建war项目:
    1. 3.1. 默认的项目结构:
    2. 3.2. 一个简单脚本示例:
    3. 3.3. 标签含义介绍
  4. 4. 使用gradle关联本地的jar包
  5. 5. gradle 中直接使用ant
    1. 5.1. 一种方式是可以直接在gradle的build中直接调用ant相关的命令,比如:
    2. 5.2. 也可以直接导入现有的antbuild文件(build.xml)

Gradle是一个基于Groovy实现的,类似于Ant工具的项目构建文件,其设计目标是用更简单的语法和方式来配置一个项目的构建,而不需要像Ant工具一样那么麻烦 。

如何配置Gradle:

  • 下载Gradle解压到自定义文件夹

  • 配置环境变量:GRADLE_HOME

  • 添加%GRADLE_HOME%到Path中

  • 测试 gradle -v 输出正常表示配置成功

用Gradle 打包项目

  • 构建 build.gradle 文件

  • 一个简单的gradle build文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
apply plugin: 'java'

version = '1.0.0'


repositories {

mavenLocal()

mavenCentral()

maven{

url "https://oosnmp.net/dist/release"

}

}


dependencies {

compile 'org.snmp4j:snmp4j:2.3.3'

}


jar {

manifest{

attributes 'Title': 'SNMPFramework', 'Version' : 1.0, 'Author':'LuoYuan'

}


metaInf {

from('..') {

include '*.md'

}

includeEmptyDirs = false

}

}


sourceSets{

main {

java{

srcDir 'src'

}

}

}


task javaDoces(type: Javadoc){

source = sourceSets.main.allJava

}

这个build文件表示这个项目的依赖关系,还有从什么地方获取依赖包。

dependencies 标签定义编译代码的时候要依赖的jar包

Gradle会尝试从repositories获取依赖的jar包 ,然后放到user/.gradle的文件目录下缓存,下次build的时候直接从这个地方获取。

task 标签定义一个新的task, 可以通过gradle <task> 运行。

sourceSet标签指定项目的源代码结果,如果不配置的话会是用默认的结构 src/main/java作为源文件的存放位置。

jar 标签定义执行build之后生成的jar包目录结构,可以配置jar包中manifest文件的内容。

metaInf 标签定义在生产的jar包中 META-INF 目录要放入的文件。

Gradle 构建war项目:

默认的项目结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
.

├── build.gradle

└── src

└── main

├── java

│ └── com

│ └── manning

│ └── gia

│ └── todo

│ ├── model

│ │ └── ToDoItem.java

│ ├── repository

│ │ ├── InMemoryToDoRepository.java

│ │ └── ToDoRepository.java

│ └── web

│ └── ToDoServlet.java

└── webapp-------------------------------------------------#A

├── WEB-INF

│ └── web.xml----------------------------------------#B

├── css------------------------------------------------#C

│ ├── base.css

│ └── bg.png

└── jsp------------------------------------------------#D

├── index.jsp

└── todo-list.jsp

#A Web源文件默认目录

#B Web应用描述符文件

#C 存储描述如何展现HTML元素的样式单文件的目录

#D 存放JSP形式的动态脚本化视图组件

一个简单脚本示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
apply plugin: 'war'

version = '1.0.0'

apply plugin: 'jetty'

httpPort = 8888

repositories {

mavenLocal()

mavenCentral()

}


war {

manifest{

attributes 'Title': 'SNMPFrameworkUI', 'Version' : 1.0, 'Author':'LuoYuan'

}

metaInf {

from('.') {

include '**/*.md'

}

includeEmptyDirs = false

}

}

标签含义介绍

apply plugin:’jetty’ 指定是用jetty作为运行war的容器,当运行

1
2
3

gradle jettyRun

可以启动jetty 然后自动部署当前的war包进行测试。

httpPort 这个属性指定jetty运行的时候使用的端口,默认为8080。

使用gradle关联本地的jar包

  • 首先定义repositories

repositories {

flatDir{

    dirs 'src/main/webapp/WEB-INF/lib'

}

}

  • 然后需要将jar包放到对应的目录,并且在build文件中增加

dependencies {

compile ([':name:version'],[':name:version'])

}

gradle 中直接使用ant

一种方式是可以直接在gradle的build中直接调用ant相关的命令,比如:

1
2
3
4
5
6
7
8
task zip << {
ant.zip(destfile: 'archive.zip') {
fileset(dir: 'src') {
include(name: '**.xml')
exclude(name: '**.java')
}
}
}

也可以直接导入现有的antbuild文件(build.xml)

可以同时给ant trarget name 加上前缀,这样可以避免出现同名的错误。
这个引入的ant 中定义的target放在other的group下面。

1
2
3
ant.importBuild('build.xml') { antTargetName ->
'ant-'+antTargetName
}
Contents
  1. 1. 如何配置Gradle:
  2. 2. 用Gradle 打包项目
  3. 3. Gradle 构建war项目:
    1. 3.1. 默认的项目结构:
    2. 3.2. 一个简单脚本示例:
    3. 3.3. 标签含义介绍
  4. 4. 使用gradle关联本地的jar包
  5. 5. gradle 中直接使用ant
    1. 5.1. 一种方式是可以直接在gradle的build中直接调用ant相关的命令,比如:
    2. 5.2. 也可以直接导入现有的antbuild文件(build.xml)