gradle编译
编译三剑客。ant、gradle、maven
gradle安装
gradle一般不需要安装,我们只要有他的zip文件就行。
在工程目录下的gradle\wrapper目录下。
有gradle-*-bin.zip、gradle-wrapper.jar、gradle-wrapper.properties三个文件。
需要注意的是gradle-wrapper.properties文件里配置了gradle的安装源文件地址。
我们一般直接指向gradle-*-bin.zip就行了
如下修改
#distributionUrl=https://services.gradle.org/distributions/gradle-5.6.4-bin.zip distributionUrl=gradle-5.6.4-bin.zip
编译配置文件(build.gradle)
gradle跟maven一样,不仅能进行build。也可以自动引入jar。
不过项目里通常不会直接应用网上的源,而是使用本地已经下好的jar。
buildscript 中设定maven库和依赖。
我们现在使用内部提供的maven库就可以了。
buildscript { repositories { mavenLocal() //mavenCentral() maven { url 'http://10.10.71.97:8081/repository/maven-public/' } } dependencies { classpath fileTree(dir: "/lib/classpath", include: '*.jar') } }
东软库的jar包不是很全,如果东软不行的话,可以考虑使用阿里云的。
repositories { mavenLocal() //mavenCentral() maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } }
subprojects表示设定子工程共通项目。
如果没有子工程,那么我们删除subprojects这层就可以了。
subprojects { version = '' apply plugin: 'java' apply plugin: 'eclipse-wtp' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' sourceCompatibility=11 targetCompatibility=11 repositories { mavenLocal() //mavenCentral() maven { url 'http://10.10.71.97:8081/repository/maven-public/' } } compileJava { options.encoding = 'UTF-8' } def env = System.getProperty("profile") ?: "dev" processResources { from('src/main/java') { include '**/*.xml' } } if (env == "product") { processResources { from('/deploy/product/resources') { include '**/*.*' } } } }
对上面个细类说明
version = ''
版本号。如果设定会在生成的jar或war名字上,自动加上版本号。我们通常不用。
apply plugin: 'java' apply plugin: 'eclipse-wtp' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management'
插件。通常设定这4个就好。
java、eclipse、sprintboot、sprint依赖管理。
sourceCompatibility=11 targetCompatibility=11
JDK版本
repositories { mavenLocal() //mavenCentral() maven { url 'http://10.10.71.97:8081/repository/maven-public/' } }
指定maven仓库。
compileJava { options.encoding = 'UTF-8' }
java编译参数。一般我们会设定编译文字code。
def env = System.getProperty("profile") ?: "dev" processResources { from('src/main/java') { include '**/*.xml' } } if (env == "product") { processResources { from('/deploy/product/resources') { include '**/*.*' } } }
引入资源。一般我们会使用参数,来配置不同环境使用的资源文件的不同。
例如 PG时默认使用src/main/resources下面的。IT时使用product/resources下面的等等
archivesBaseName = 'CCMS'
打成jar包或war包的名字
war { enabled = true }
打成war包的设定。是否能打成war包。排除哪些代码不打包等。
jar { enabled = true rootSpec.exclude("/*.*") }
打成jar报的设置。排除哪些代码不打包等。
bootJar{ enabled = false excludeDevtools = true }
是否打成springbootjar包。如果是batch,就设定为true。如果是common包,不启动,就设定为false。
排除spring boot 开发工具包。
dependencies { compileOnly fileTree(dir: "lib/compileOnly", include: '*.jar') implementation fileTree(dir: "lib/implementation", include: '*.jar') implementation fileTree(dir: "lib/providedRuntime", include: '*.jar') implementation fileTree(dir: "lib/compile", include: '*.jar') providedCompile fileTree(dir: "lib/providedCompile", include: '*.jar') testImplementation fileTree(dir: "lib/testcompileOnly", include: '*.jar') }
依赖哪些jar包。
注意是有区别的。
compileOnly只是在编译时使用,并不打入jar或war包。
testImlementation,只是执行自动测试时打入jar或war包。
tasks.create("ppms") { group 'ppms' description 'ppms task' doLast { println "[phase:execution] ppms start" } }
做成任务。用于执行确认。
执行
我们设置完配置文件后,使用gradlew执行就可以了。
gradlew build -Dprofile=product
build会把说有的标签都执行一遍。
我们也可以直接指定执行例如
gradle bootJar -Dprofile=product
-q task名来执行task。
执行父类的task,可以把group内的task都执行。
gradlew -q ppms
多工程管理
有时项目会分成几个子工程。我们通常会先建一个父工程。之后在父工程下关联子工程。
父工程的settings.gradle中定义各个子工程
rootProject.name='父工程' include ':子工程1',':子工程2',':子工程3'
如果子工程中想引入别的子工程。
dependencies { compile project(':子工程') }
gradle资源配置文件
gradle可能需要设定一些配置。
例如默认时候,我们不想使用内部maven库,可以在gradle.properties中指定JDK或上网代理
org.gradle.java.home=D:\\java\\11 systemProp.http.proxyHost=proxy.neusoft.com systemProp.http.proxyPort=8080 systemProp.http.proxyUser=mailuser systemProp.http.proxyPassword=mailpassword systemProp.http.nonProxyHosts=localhost|10.*.*.*|192.168.*.* systemProp.https.proxyHost=proxy.neusoft.com systemProp.https.proxyPort=8080 systemProp.https.proxyUser=mailuser systemProp.https.proxyPassword=mailpassword systemProp.https.nonProxyHosts=localhost|10.*.*.*|192.168.*.*
如果提示无法下载。
将上面的url 'http://10.10.71.97:8081/repository/maven-public/'改为阿里仓库
url 'http://maven.aliyun.com/nexus/content/groups/public/'
如果提示无法连接proxy.neusoft.com
将proxy.neusoft.com改为后面的ip