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

之前写过一篇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

posted @ 2015-12-13 16:11  菩提树下的杨过  阅读(9000)  评论(0编辑  收藏  举报