gradle (v7.5) 使用

Posted qq_38599908

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gradle (v7.5) 使用相关的知识,希望对你有一定的参考价值。

gradle (v7.5) 使用

gradle 和 maven 都是项目构建工具,Gradle和Maven两种构建方式存在一些根本差异。 Gradle基于任务依赖关系图-其中任务就是工作,而Maven是基于固定的过程和线性模型。 使用Maven构建项目时,目标将附加到项目阶段,目标的作用类似于Gradle的任务,即“完成任务的事物”。 在性能方面,两者都允许多模块构建并行运行。 但是,Gradle允许增量构建,因为它检查是否更新了哪些任务。
gradle 和 maven 构建的项目结构如下图:

一、下载

官网 Gradle | Installation
下载 https://gradle.org/install/#manually

得到安装压缩包:

gradle-7.5.1-bin.zip 或类似的 gradle-7.5-bin.zip

二、配置

1. 解压到指定目录:

我这里放在 : D:\\gradle-7.5\\ ,展开后如下图

其中 repos 目录是自己另外创建的,用于存放下载的 gradle 资源包 (跟 maven 的资源包类似,但资源目录结构有差异)

2. 增加系统变量:GRADLE_HOME、GRADLE_USER_HOME


GRADLE_HOME 指的是 gradle 安装的解压目录
GRADLE_USER_HOME 指的是 gradle 将要下载使用的库目录。
目前, gradle 下载的依赖文件都存放在GRADLE_USER_HOME\\caches\\modules-2\\files-2.1

在 idea 中,目前需要对刚建立的每一个项目都需要单独重新指定。

3. 重启系统,查检安装效果

CMD 窗口 C\\Users…>gradle -v


会同时自动在 C:\\Users…\\ 目录生成 .gradle 目录

4. 修改 maven 下载源

Gradle 自带的 maven 源地址是国外的,该 Maven 源在国内的访问速度是很慢的,除非使用了特别 的手段,一般情况下,我们建议使用国内第三方开放的 Maven 源或者企业内部自建 Maven 源。

认识 init.d 文件夹

我们可以在 gradle 的 init.d 目录下创建以 .gradle 结尾的文件,实现在 build 开始之前执行,所以可在这个文件配置一些想预先加载的操作。

在 init.d 文件夹创建 init.gradle 文件:

allprojects 
    repositories
    	mavenLocal ()     // maven 本地仓库
    	maven  name "public" ; url 'https://maven.aliyun.com/repository/public/' 
    	maven  name "jcenter" ; url https://maven.aliyun.com/repository/jcenter' 
        maven  name "google" ; url 'https://maven.aliyun.com/repository/google' 
        maven  name "center" ; url 'https://maven.aliyun.com/repository/central' 
        maven  name "gradle-plugin" ; url 'https://maven.aliyun.com/repository/gradle-plugin' 
        maven  name "spring" ; url 'https://maven.aliyun.com/repository/spring' 
        mavenCentral ()    // maven 中央仓库
    

	buildscript
		repositories 
			mavenLocal ()
            maven  url 'https://maven.aliyun.com/repository/jcenter' 
            maven  url 'https://maven.aliyun.com/repository/google' 
            maven  url 'https://maven.aliyun.com/repository/central' 
            maven  url 'https://maven.aliyun.com/repository/gradle-plugin' 
            jcenter ()
            google ()
            mavenCentral ()
		
	

拓展使用 init.gradle 文件

(1). 在命令行指定文件,例如: gradle --init-script path/init.gradle -q taskName ,可以指定多个 init 文件
(2). 把 init.gradle 放置到 USER_HOME/.gradle/ 目录下
(3). 把以 .gradle 结尾文件放置到 USER_HOME/.gradle/init.d/ 目录下
(4). 把以 .gradle 结尾文件放置到 GRADLE_HOME/init.d/ 目录下
以上4种方式存在2种以上,都会被执行

仓库地址说明

(1). mavenLocal () //本地仓库
(2). maven name “Your name” ; url ‘https://maven.aliyun.com/repository/public/’ // 指定第3方仓库,比如阿里云仓库
(3). mavenCentral () // Maven 中内仓库

三、使用


或 CMD 命令行建仓项目:在工作目录新建项目文件,并进入该目录,并在目录上方地址栏输入cmd, 执行:gradle init命令

自动构建生成的目录文件:

无法使用gradle和V-Leaflet编译vaadin widgetset

我有一个使用vaadin插件和gradle配置的spring-vaadin项目。将V-Leaflet添加到我的项目第一次工作,但后来它破了,widgetset再也没有编译过了。编译失败报告它找不到杰克逊:

:vaadinPluginVersionCheck SKIPPED
:compileJava
:vaadinUpdateWidgetset
:processResources UP-TO-DATE
:classes
:vaadinClassPathJar UP-TO-DATE
:vaadinCompile

Errors in 'org/vaadin/addon/leaflet/shared/Point.java'
Line 37: JsonValue cannot be resolved to a type
Line 3: The import com.fasterxml cannot be resolved
Aborting compile due to errors in some input files
 FAILED

以下是gradle依赖项部分中的相关部分:

compile 'com.fasterxml.jackson.core:jackson-core:2.9.7'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.7'
vaadinCompile  'org.peimari:g-leaflet:+' //For v-leaflet
compile  'org.vaadin.addon:v-leaflet:+' //For map fields

我已经尝试过使用vaadinCompile,编译和实现所有这些。

答案

我解决了这个问题。

我不确切知道发生了什么,但我通过更新所有内容并在vaaddin编译中删除对传递依赖项的直接访问来解决它。

最终的gradle脚本是:

vaadinCompile 'org.vaadin.addon:v-leaflet:2.0.9'
compile 'org.vaadin.addon:v-leaflet:2.0.9'

只添加vaadinCompile部分解决了jar并从gradle运行的问题,但我还必须添加compile指令,以便eclipse可以在类路径上找到v-leaflet类。

以上是关于gradle (v7.5) 使用的主要内容,如果未能解决你的问题,请参考以下文章

在gradle中构建java项目

如何在没有 Gradle 的 Eclipse 中的 Android 项目上启用 multidex

如何使用 kotlin dsl Gradle 将编译器参数传递给 java Compiler

将系统属性与 proguard 配置文件一起传递给 gradle proguardFile 属性

MAC 配置JDK 和GRADLE 环境变量

build.gradle 文件中的 compileKotlin 块抛出错误“找不到参数的方法 compileKotlin() [...]”