Gradle Compile Tool
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。
环境准备
- 打开官方网站:https://gradle.org/install 下载对应的版本包,例如gradle-6.4.1-bin.zip
- 在 Windows 中配置 gradle,解压到指定目录(e.g. D:/Program), then add bin directory to PATH.
- 在 Linux 中配置 gradle, 一般我们解压到 /opt 目录中,然后添加环境变量
| |
| [root@node7 bin] |
| export PATH=$PATH:/opt/gradle-4.4/bin |
| [root@node7 bin] |
| [root@node7 bin] |
配置文件
buildscript 区域
- 该区域中有 repositories、dependencies 配置,标识 gradle 脚本自身需要使用的资源。
- 而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。
| buildscript { |
| repositories { |
| mavenLocal() |
| maven { url "https://repo.grails.org/grails/core" } |
| } |
| dependencies { |
| classpath "org.grails:grails-gradle-plugin:$grailsVersion" |
| classpath "org.grails.plugins:hibernate5:${gormVersion - ".RELEASE"}" |
| classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.15.1" |
| } |
| } |
基本属性 区域
| version "0.1" |
| group "com.next" |
plugin 区域
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码。而大部分的项目,它们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建代码,因为Gradle已经为我们提供了相应的插件。Gradle 本身自带了许多插件,而对于Gradle没有的插件,可以去github上看看有没有其他人实现,或自己实现。对Java项目而言,Gradle有Java插件,提供了像编译、测试、打包之类的功能。这里简单介绍一下Java插件。Java插件为构建项目定义了许多的默认设置,像源文件目录,编译后的文件存放位置等等。如果你是按着默认的规则来的,那么构建脚本将会很简单。当然,如果项目结构不一样,也可以自己指定这些规则。这里暂不介绍,只说一下基本的用法。
| apply plugin: "eclipse" |
| apply plugin: "idea" |
| apply plugin: "war" |
| apply plugin: "org.grails.grails-web" |
| apply plugin: "asset-pipeline" |
| apply plugin: "org.grails.grails-gsp" |
| /* |
| 使用JAVA插件,定义一个Java项目只需要添加这么一句代码,它会为你添加Java插件,以及一些内置任务。 |
| 默认情况下,Gradle会在 |
| src/main/java中查找你的源码, |
| src/test/java中查找你的测试代码, |
| src/main/resources下的文件都会被打包, |
| src/test/resources下的文件会被包含在classpath中用于测试。 |
| 所有输出的文件都保存在build目录里,而生成的jar包则是在build/libs里面。 |
| */ |
| apply plugin: 'java' |
repositories 区域
- 不同于 buildscript 区域中的配置,这里配置的是项目内容所需要的仓库地址,告诉Gradle在哪里可以找到这些依赖。
- 当访问官方源太慢的时候,可以配置成国内的源地址。
| repositories { |
| |
| mavenLocal() |
| |
| maven { url "https://repo.grails.org/grails/core" } |
| |
| |
| |
| |
| |
| |
| } |
dependencies 区域
- 不同于 buildscript 区域中的配置,这里配置的是项目内容所需要的依赖信息
- 留意版本上的 + 号,它会在编译的时候找到最新的包
- 如果需要升级框架本身所依赖的包就直接在这里定义即可
| dependencies { |
| // compile 阶段需要使用的依赖,如下两种写法都可以。 |
| compile "org.springframework.boot:spring-boot-starter-logging" |
| compile group: 'commons-collections', name: 'commons-collections', version: '3.2' |
| |
| // runtime 阶段需要使用到的依赖。 |
| runtime "com.bertramlabs.plugins:asset-pipeline-grails:2.15.+" |
| testCompile "org.grails:grails-web-testing-support" |
| testRuntime "net.sourceforge.htmlunit:htmlunit:2.+" |
| // 第三方jar包的一种添加方式 |
| compile fileTree(dir: 'libs', include: '*.jar') |
| } |
bootRun 区域
| bootRun { |
| jvmArgs('-Dspring.output.ansi.enabled=always') |
| jvmArgs('-Xmx4096m') |
| addResources = true |
| String springProfilesActive = 'spring.profiles.active' |
| systemProperty springProfilesActive, System.getProperty(springProfilesActive) |
| } |
grails 区域?
- 不知道这是不是 gradle 的标准配置,尚未深入了解。
- 在 Windows 终端启动 grails 程序的时候,会因为文件或者命令太长导致启动失败,配置上这个就好了。
| grails { |
| pathingJar = true |
| } |
assets 区域?
| assets { |
| minifyJs = true |
| minifyCss = true |
| } |
常用命令
| gradle eclipse |
| gradle build |
| gradle clean |
| gradlw assemble |
| gradlw check |
常用包
| |
| compile group: 'com.google.zxing', name: 'core', version: '3.4.0' |
| compile group: 'com.google.zxing', name: 'javase', version: '3.4.0' |
| |
| compile group: 'com.itextpdf', name: 'itextpdf', version: '5.5.13.1' |
| compile group: 'com.itextpdf', name: 'itext-asian', version: '5.2.0' |
| |
| |
| compile group: 'com.lowagie', name: 'itext', version: '2.1.7' |
| compile group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.13.0' |
| |
| |
| compile group: 'com.aliyun.oss', name: 'aliyun-sdk-oss', version: '3.11.1' |
| |
| compile group: 'com.alibaba', name: 'fastjson', version: '1.2.75' |
| |
| |
| compile group: 'commons-io', name: 'commons-io', version: '2.8.0' |
| |
| runtime 'org.postgresql:postgresql:42.+' |
常见问题
在使用IDEA作为开发环境里的时候,导入Gradle的项目,因为不同的配置环境,可能回下载指定版本的Gradle,有的时候可能因为网络等问题导致下载失败,这时我们就需要删除临时的文件,重新下载或者手动下载。
| C:\Users\ducha\.gradle\wrapper\dists\gradle-5.3-all\a2o9bs8pjyp10tdbmwhtqkmvn\gradle-5.3-all.zip |
关于漏洞,例如现在我们使用 Grails 框架3系列的版本,如果框架本身依赖的包太旧了,互联网暴漏出一些漏洞,这里我们就需要升级依赖的jar包,这里我们直接就在这里更新依赖即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?