1. 程式人生 > >gradle專案中如何支援java與scala混合使用?

gradle專案中如何支援java與scala混合使用?

一、目錄結構

基本上跟maven一樣,tips:這一堆目錄結構不用死記,後面會講如何用gradle命令快速生成

二、build.gradle配置

複製程式碼
 1 group 'yjmyzz'
 2 version '1.0-SNAPSHOT'
 3 
 4 apply plugin: 'java'
 5 apply plugin: 'scala'
 6 apply plugin: 'application' //可選(可自動生成shell啟動指令碼)
 7 mainClassName = 'AppDemo' //可選(與上行的application外掛配套出現)
 8 
 9 //這裡是關鍵(把java與scala的原始碼目錄全對映到scala上,
10 // 這樣gradle compileScala時就能同時編譯java與scala的原始碼) 11 sourceSets { 12 main { 13 scala { 14 srcDirs = ['src/main/scala', 'src/main/java'] 15 } 16 java { 17 srcDirs = [] 18 } 19 } 20 21 test { 22 scala { 23 srcDirs = ['src/test/scala', 'src/test/java']
24 } 25 java { 26 srcDirs = [] 27 } 28 } 29 } 30 31 //可選(專案初始化時,可用gradle cDirs生成scala及java的src目錄) 32 task "createDirs" << { 33 sourceSets*.scala.srcDirs*.each { it.mkdirs() } 34 sourceSets*.java.srcDirs*.each { it.mkdirs() } 35 sourceSets*.resources.srcDirs*.each { it.mkdirs() }
36 } 37 38 repositories { 39 mavenLocal() 40 maven { url 'http://maven.oschina.net/content/groups/public/' } 41 mavenCentral() 42 } 43 44 dependencies { 45 compile "org.scala-lang:scala-library:2.11.7" 46 compile "org.scala-lang:scala-compiler:2.11.7" 47 compile "org.scala-lang:scala-reflect:2.11.7" 48 testCompile "junit:junit:4.11" 49 } 50 51 //可選,如果想讓生成的jar可直接執行,建議加上 52 jar { 53 manifest { 54 attributes 'Main-Class': 'AppDemo' 55 } 56 }
複製程式碼

這樣就可以了:

建立初始目錄:gradle cDirs (注:這是縮寫方式,與gradle createDirs完全相同)

編譯: gradle compileScala

生成jar包: gradle jar

生成帶啟動指令碼的可執行包: gradle installDist