编译三剑客。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