分享知识 传递快乐
一、配置环境变量
打开 系统属性->高级->环境变量-系统变量 中添加:
GRADLE_HOME:D:\Apache\Gradle\gradle-5.3-all
GRADLE_USER_HOME:D:\Apache\Gradle\repository //可省略
PATH:;%GRADLE_HOME%\bin;
验证是否配置成功,进入cmd后,输入:
gradle -v
二、Eclipse 安装 Gradle 插件
Help->Eclipse Marketplace… 打开窗口后输入 “Gradle” 进行安装。安装完成配置 Gradle 路径和指定仓库路径,即可正常使用。
三、配置Gradle的仓库路径修改的四种方法
方法一:
修改gradle.properties文件,增加一句
gradle.user.home=D:/Apache/Gradle/repository
但这种方法,需要每个项目文件都要改一遍,如果只是临时修改,可以采用这种方法,如果是针对所有项目的,不建议这种方法。
方法二:
Window->Preferences->Gradl 选择 “Local installation directory” 点击 “Browes…” 选择gradle路径;在 “Gradle user home” 中指定仓库位置; “Java home” 指定JDK,到此整个配置已结束。
方法三:
修改gradle启动脚本,进入gradle安装的bin目录,使用文本编辑器打开gradle.bat文件,在 “set APP_HOME=%DIRNAME%” 下面添加以下语句:
set GRADLE_OPTS="-Dgradle.user.home=D:/Apache/Gradle/repository"
方法四:
以上几种方法,都不是最理想的方法,下面推荐Windows环境变量设置gradle仓库目录:
变量名:GRADLE_USER_HOME
变量值:D:\Apache\Gradle\repository
四、创建项目
在Eclipse中右击 New->Other->Gradle->Gradle Project 打开 “New Gradle Project” 输入项目名后 “Next”, 打开 “Options” 窗口,如果在Eclipse已经配置了Gradle,直接点击 “Next” ,如果没有配置请选择 “Override Workspace Settings” ,才可以选择 “Gradle distribution” 下的选项,选择 “Local installation directory” 点击 “Browes…” 选择gradle路径;在 “Gradle user home” 中指定仓库位置; “Java home” 指定JDK,配置完成后点击 “Next” Gradle开始更新缓存,最后点击 “Finish” 完成(可省略)。
Confingure Workspace Settings是查看已配置的信息
五、Gradle配置build.gradle
创建Gradle项目后,build.gradle默认配置如下:
/*
* This file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java Library project to get you started.
* For more details take a look at the Java Libraries chapter in the Gradle
* User Manual available at https://docs.gradle.org/5.3/userguide/java_library_plugin.html
*/
plugins {
// Apply the java-library plugin to add support for Java Library
id 'java-library'
}
repositories {
// Use jcenter for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}
dependencies {
// This dependency is exported to consumers, that is to say found on their compile classpath.
api 'org.apache.commons:commons-math3:3.6.1'
// This dependency is used internally, and not exposed to consumers on their own compile classpath.
implementation 'com.google.guava:guava:27.0.1-jre'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}
Gradle build.gradle文件配置项
build.gradle文件配置是个人所查获的部分配置,详细内容看官网;如果有更详细的请留言分享。
根据java web项目,及官方文档,build.gradle配置如下:
/*
* This file was generated by the Gradle "init" task.
*
* This generated file contains a sample Java Library project to get you started.
* For more details take a look at the Java Libraries chapter in the Gradle
* User Manual available at https://docs.gradle.org/5.3/userguide/java_library_plugin.html
*/
apply plugin: "java" //Java的JDK
apply plugin: "eclipse" //eclipse项目插件
apply plugin: "war" //项目构建输出war
apply plugin: "eclipse-wtp" //web传输层插件
apply plugin: "java-library" //Java Library插件通过提供有关Java库的特定知识来扩展Java插件的功能
apply plugin: "maven" //Maven插件
apply plugin: "maven-publish" //Maven 发布插件
//group和version分别为项目的所在组和版本信息。和Maven类似,而artifactId在gradle则是项目的name,值保存在settings.gradle文件的rootProject.name中。
group = "com.xh.mvc" //坐标
version = "0.0.1-SNAPSHOT" //版本
description = "gradle-mvc" //描述
sourceCompatibility = "1.8" //Jdk版本 指定编码环境
targetCompatibility ="1.8" //Jdk版本 指定编译环境
buildDir="D:/Eclipse/新建文件夹" //war 输出路径
webAppDirName = "webapp" //设置 WebApp 根目录
//禁止eclipse下载源码
eclipse {
classpath {
downloadSources = false
downloadJavadoc = false
}
}
war {
baseName = "gradle-mvc" //war名称
version = "0.0.1.mvc-SNAPSHOT"//war版本号:baseName+"-"+version
}
//创建Java文档,配置了这个任务后,执行gradle的javadoc命令,可以自动生产javaDoc文档。前提当然你自己有给类和方法按规范添加注解。
task createJavadoc(type: Javadoc) {
source = sourceSets.main.allJava
}
//repositories仓库
repositories {
//jcenter() 默认仓库
//mavenLocal()//添加Maven本地资源库
//mavenCentral()//添加Maven中央资源库,表示会从Maven中央库获取数据。
//自定义仓库
maven{
url "http://central.maven.org/maven2/"
}
}
//声明外部属性一
ext.druidVersion = "1.1.10"
ext.fastjsonVersion = "1.2.56"
dependencies {
//声明外部属性二
def springVersion = "4.3.3.RELEASE"
//声明外部属性三
ext{
hibernateVersion = "5.3.3.Final"
}
compile group: "org.apache.commons", name: "commons-lang3", version: "3.8.1"
compile group: "commons-io", name: "commons-io", version: "2.6"
// spring library
compile group: "org.springframework", name: "spring-aop", version: "$springVersion"
compile group: "org.springframework", name: "spring-aspects", version: "$springVersion"
compile group: "org.springframework", name: "spring-beans", version: "$springVersion"
compile group: "org.springframework", name: "spring-context", version: "$springVersion"
compile group: "org.springframework", name: "spring-context-support", version: "$springVersion"
compile group: "org.springframework", name: "spring-core", version: "$springVersion"
compile group: "org.springframework", name: "spring-expression", version: "$springVersion"
compile group: "org.springframework", name: "spring-jdbc", version: "$springVersion"
compile group: "org.springframework", name: "spring-orm", version: "$springVersion"
compile group: "org.springframework", name: "spring-test", version: "$springVersion"
compile group: "org.springframework", name: "spring-tx", version: "$springVersion"
compile group: "org.springframework", name: "spring-web", version: "$springVersion"
compile group: "org.springframework", name: "spring-webmvc", version: "$springVersion"
compile group: "org.hibernate", name: "hibernate-entitymanager", version: hibernateVersion
compile group: "org.hibernate", name: "hibernate-ehcache", version: hibernateVersion
compile group: "com.alibaba", name: "druid", version: druidVersion
compile group: "com.alibaba", name: "fastjson", version: fastjsonVersion
compile group: "mysql", name: "mysql-connector-java", version: "8.0.13"
compile group: "log4j", name: "log4j", version: "1.2.17"
compile group: "org.slf4j", name: "slf4j-api", version: "1.7.25"
testCompile group: "org.slf4j", name: "slf4j-log4j12", version: "1.7.25"
testCompile group: "org.slf4j", name: "slf4j-simple", version: "1.7.25"
testCompile group: "junit", name: "junit", version: "4.12"
compile group: "javax.servlet", name: "javax.servlet-api", version: "3.1.0"
compile group: "javax.servlet", name: "jstl", version: "1.2"
compile group: "javax.servlet.jsp", name: "javax.servlet.jsp-api", version: "2.2.1"
}
publishing {
publications {
maven(MavenPublication) {
from components.java
}
}
}
//设置charset字符编码
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
mavenLocal()表示会从本地获取资源,获取资源的顺序为:
%USER_HOME%/.m2/settings.xml中指定的路径
%M2_HOME%/conf/settings.xml中指定的路径
%USER_HOME%/.m2/repository
注:这里发现一个BUG,按照官方文档说,如果系统用户文件夹下的.m2中不存在settings.xml文件会自动去找%M2_HOME%的settings.xml文件,实际却不会,然后直接指向了%USER_HOME%/.m2/repository。建议自定义maven本地库的,把%M2_HOME%的settings.xml文件COPY一份到%USER_HOME%/.m2目录下即可。
Maven类似,gradle导入依赖包也可以定义其作用的生命周期:
compile:编译时必须。
runtime:运行时必须,包括编译时。
testCompile:测试编译时必须。
testRuntime:测试运行时必须,包括编译时。
注:此外配置依赖包,还可以模块化配置、导入list、配置是否传递等
plugin插件配置
apply plugin: 'java' //Java的JDK
apply plugin: 'eclipse' //eclipse项目插件
apply plugin: 'war' //项目构建输出war
apply plugin: 'eclipse-wtp' //web传输层插件
apply plugin: 'java-library' //Java Library插件通过提供有关Java库的特定知识来扩展Java插件的功能
apply plugin: "maven" //Maven插件
apply plugin: "maven-publish" //Maven 发布插件
或者
plugins {
id 'java'
id 'eclipse'
id 'java-library'
id 'war'
id 'eclipse-wtp'
id 'java-library'
}
ext是自定义属性
现在很多人都喜欢把所有关于版本的信息都利用ext放在另一个自己新建的gradle文件中集中管理。
例如:
首先我们新建两个文件,分别叫build.gradle和version.gradle
version.gradle
ext{
versionName = "1.0.0"
versionCole = "1"
}
build.gradle
apply from: "version.gradle"
task printStringClass{
println "当前版本是${versionName}"
}
结果:
> Configure project :
当前版本是1.0.0
六、maven与gradle转换
maven -> gradle
先保证本机安装了gradle 2.0以上的版本,然后在maven项目的根目录下运行
gradle init --type pom
gradle -> maven
在build.gradle中增加以下内容(group,version可自行修改,artifactId默认为目录名称)
apply plugin: 'java'
apply plugin: 'maven'
group = 'com.101tec'
version = '0.7-dev'
sourceCompatibility = 1.6
然后./gradlew build ,成功后将在build\poms目录下生成pom-default.xml文件,把它复制到根目录下,改名成pom.xml即可。
当然,通过修改build.gradle 也可以直接在根目录下生成pom.xml
task writeNewPom << {
pom {
project {
inceptionYear '2008'
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution 'repo'
}
}
}
}.writeTo("$buildDir/pom.xml")
}