• 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

  • 相关阅读:
    calcite介绍
    kylin介绍
    hbase(三)coprocessor
    流式计算-窗口
    实验室服务器琐事
    流畅的python笔记
    语义分割相关网络简述
    leetcode 696
    树的非递归遍历
    leetcode 665
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/java-mix-scala-in-one-project-using-gradle.html
Copyright © 2020-2023  润新知