1.Gradle简介
Gradle是源于Apache Ant和Apache Maven概念的项目自动化构建开源工具,它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置面向Java应用为主。当前其支持的语言暂时有Java、Groovy、Kotlin和Scala。
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
IDEA 2017.3以上版本支持。
2.下载
官方网站:https://gradle.org/install/#manually
提供了两种下载方式,Binary-only是只下载二进制源码,Complete, with docs and sources是下载源码和文档。如果有阅读文档的需求可以下载第二个,没有需要的下载Binary-only即可。
3.安装与配置
解压安装包到想安装到的目录。
- 配置
(1) 配置环境变量
1) 新建变量
变量名:GRADLE_HOME
变量值:解压到的目录
2) 新建变量
变量名:GRADLE_USER_HOME
变量值:自定义Gradle仓库目录或者Maven的仓库目录
3) 添加变量
变量名:Path
变量值:%GRADLE_HOME%\bin;
(2) 配置Gradle仓库源
在Gradle安装目录下的 init.d 文件夹下,新建一个 init.gradle 文件,里面填写以下配置。
allprojects {
repositories {
maven { url 'file:///C:/Java/maven_repository'}
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
}
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
}
repositories 中写的是获取 jar 包的顺序。先是本地的 Maven 仓库路径;接着的 mavenLocal() 是获取 Maven 本地仓库的路径,应该是和第一条一样,但是不冲突;第三条和第四条是从国内和国外的网络上仓库获取;最后的 mavenCentral() 是从Apache提供的中央仓库获取 jar 包。
(3) 配置到IDEA
在IDEA的Setting里打开"Build, Execution, Deployment"-"Build Tools"-"Gradle"。
勾选 Use local Gradle distribution,在 Gradle home 中选择安装的Gradle的路径。
如果在变量和配置文件中设置了Gradle的仓库路径,在 Service directory path 中就会自动填写地址,如果想改的话可以手动修改。
4.导入Halo博客源码
从 GitHub 上拉取项目源码(这里我是直接下载安装包的,这样感觉比较快)
4.运行前遇到的问题
(1)报错如下:
Caused by: org.gradle.api.InvalidUserCodeException: Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository 'maven(http://maven.aliyun.com/nexus/content/groups/public/)' to redirect to a secure protocol (like HTTPS) or allow insecure protocols. See https://docs.gradle.org/7.2/dsl/org.gradle.api.artifacts.repositories.UrlArtifactRepository.html#org.gradle.api.artifacts.repositories.UrlArtifactRepository:allowInsecureProtocol for more details.
改: 修改init.gradle 文件
maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public/' }
(2) 报错:
Error running 'Application': Command line is too long. Shorten command line
改:
首先找到 .idea/libraies/workspace.xml 中的 <component name="PropertiesComponent">
在该组件中添加代码为:<property name="dynamic.classpath" value="true" />
(3) idea 弹出提示
The IDE modules below were removed by the Gradle project reload:
halo-master
You can open dialog to select the ones you need to restore.
处理办法:
open dialog 后选择check ,点击ok ,会发现加载了一个模块[halo]。
5.项目启动前请做好如下准备:
-
确保 JDK 的版本符合要求,本文使用 JDK 11;
-
确保所有的依赖都正常导入(本次实践未发生异常);
-
确保 resources/templates/themes 目录不为空,正常情况下应该有 anatole 文件夹。为空是因为使用 Git 克隆时没有克隆子模块,可以在Halo 官网的主题仓库下载 Anatole 主题,解压后重命名为 anatole,并复制到 themes 目录下;
-
Halo 默认使用 H2 Database,该数据库无需安装,因此可以直接启动项目。如果希望使用 MySQL,则需要在 application.yaml 文件中注释掉 H2 Database 的配置,并添加 MySQL 的相关配置(数据库名为 'halodb'):
# MySQL 配置 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username: root password: 123456