1. 程式人生 > >gradle 打war 包

gradle 打war 包

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