之前写过一篇maven项目中java与scala如何混用,今天来看看gradle项目中如何达到同样的效果:
一、目录结构

基本上跟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
新闻热点
疑难解答