build.gradle文件
apply plugin: 'war'
webAppDirName = 'WebRoot' //设置 WebApp 根目录
version = ''
buildDir = 'target' //war 输出路径
sourceCompatibility='1.6' //设置jdk 版本
war{
baseName ="PCMS" //war名称
}
//定义目录结构
sourceSets {
main {
java {
srcDirs = ['src/cmes/java']
}
resources {
srcDirs = ['src/cmes/resources','src/plat/resources']
}
}
}
// 设置 maven 库地址
repositories {
maven { url 'http://maven.oschina.net/content/groups/public/' }
}
//加载本地依赖
dependencies {
providedCompile fileTree(dir: System.getenv("CATALINA_HOME")+'/lib', include: '*.jar')
providedCompile fileTree(dir: 'WebRoot/WEB-INF/lib', include: '*.jar')
//依赖的jar cargo.jar
cargo('org.codehaus.cargo:cargo-ant:1.3.1') {
exclude group: 'xml-apis', module: 'xml-apis'
}
cargo 'xml-apis:xml-apis:2.0.2'
}
//设置编码
tasks.withType(Compile) {
options.encoding = "UTF-8"
}
gradle.properties 设置
//支持中文文件
systemProp.file.encoding=UTF-8
gradle 依赖管理:
//声明外部属性
ext.cargoGroup = 'org.codehaus.cargo'
ext.cargoVersion = '1.3.1'
dependencies {
//使用映射声明依赖
compile group: cargoGroup, name: 'cargo-core-uberjar',version: cargoVersion
//用快捷方式来声明,引用了前面定义的外部属性
cargo "$cargoGroup:cargo-ant:$cargoVersion"
}
排除传递依赖
dependencies {
cargo('org.codehaus.cargo:cargo-ant:1.3.1') {
exclude group: 'xml-apis', module: 'xml-apis'
}
cargo 'xml-apis:xml-apis:2.0.2'
}
exclude属性值和正常的依赖声明不太一样,你只需要声明group和(或)module,Gradle不允许你只排除指定版本的依赖。
有时候仓库中找不到项目依赖的传递依赖,这会导致构建失败,Gradle允许你使用transitive属性来排除所有的传递依赖:
dependencies {
cargo('org.codehaus.cargo:cargo-ant:1.3.1') {
transitive = false
}
// 选择性的声明一些需要的库
}
动态版本声明
果你想使用一个依赖的最新版本,你可以使用latest.integration,比如声明 Cargo Ant tasks的最新版本,你可以这样写 org.codehaus.cargo:cargo-ant:latest-integration
,你也可以用一个+号来动态的声明:
dependencies {
//依赖最新的1.x版本
cargo 'org.codehaus.cargo:cargo-ant:1.+'
}
合并jar并输出:
task makeJar(type: Jar){
archiveName = "xxxx.jar"
delete 'build/outputs/xxxx.jar'
from (project.zipTree('xxxxx/xx/.jar'))
from (project.zipTree('xxxxx/xx/.jar'))
destinationDir = file("build/libs")
include(**/*.class)
exclude "**/R.class"
exclude "**/R\$*.class"
}
makeJar.dependsOn(build)