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.+' }