gradle项目中如何支持java与scala混合使用?

96
fengshunli
2017.02.22 16:31* 字数 307

一、目录结构

二、build.gradle配置

group 'yjmyzz'

version '1.0-SNAPSHOT'

apply plugin: 'java'

apply plugin: 'scala'

apply plugin: 'application' //可选(可自动生成shell启动脚本)

mainClassName = 'AppDemo' //可选(与上行的application插件配套出现)

//这里是关键(把java与scala的源代码目录全映射到scala上,

// 这样gradle compileScala时就能同时编译java与scala的源代码)

sourceSets {

main {

scala {

srcDirs = ['src/main/scala', 'src/main/java']

}

java {

srcDirs = []

}

}

test {

scala {

srcDirs = ['src/test/scala', 'src/test/java']

}

java {

srcDirs = []

}

}

}

//可选(项目初始化时,可用gradle cDirs生成scala及java的src目录)

task "createDirs" << {

sourceSets*.scala.srcDirs*.each { it.mkdirs() }

sourceSets*.java.srcDirs*.each { it.mkdirs() }

sourceSets*.resources.srcDirs*.each { it.mkdirs() }

}

repositories {

mavenLocal()

maven { url 'http://maven.aliyun.com/nexus/content/repositories/central/' }

mavenCentral()

}

dependencies {

compile "org.scala-lang:scala-library:2.11.7"

compile "org.scala-lang:scala-compiler:2.11.7"

compile "org.scala-lang:scala-reflect:2.11.7"

testCompile "junit:junit:4.11"

}

//可选,如果想让生成的jar可直接运行,建议加上

jar {

manifest {

attributes 'Main-Class': 'AppDemo'

}

}

这样就可以了:

创建初始目录:gradle cDirs (注:这是缩写方式,与gradle createDirs完全相同)

编译: gradle compileScala

生成jar包: gradle jar

生成带启动脚本的可运行包: gradle installDist

日记本