java - 可以在Gradle中混合.java和.clojure和.scala文件

标签 java scala gradle clojure

可以在Gradle中混合.java和.clojure和.scala文件。我想混用几种编程语言,只是在寻找最好的方法来做到这一点。

最佳答案

我从一个混合了Java,scala和clojure的项目开始。
为了包括scala,我仅添加了scala plugin
apply plugin: 'scala'
以及scala对依存关系的依存关系部分:
compile 'org.scala-lang:scala-library:2.11.7'
为了包括clojure,我关注了this answer

我的最终build.gradle文件如下所示:

buildscript {
    repositories {
        maven { url "http://clojars.org/repo" }
        mavenCentral()
        jcenter()
    }

    dependencies {
        classpath 'clojuresque:clojuresque:1.7.0'
    }
}

apply plugin: 'application'
apply plugin: 'scala'
apply plugin: 'clojure'

repositories {
    mavenCentral()
    maven { url "http://clojars.org/repo" }
}

dependencies {
    compile 'org.clojure:clojure:1.7.0'
    compile 'org.scala-lang:scala-library:2.11.7'
}

// NOTE: You *must* enable AOT (Ahead-of-Time) compilation in order to use a Clojure class as the main class
clojure.aotCompile = true
clojure.warnOnReflection = true

mainClassName = "foo"

我的项目结构是这样的:
.
├── build.gradle
└── src
    └── main
        ├── clojure
        │   └── foo.clj
        ├── java
        │   └── JavaClass.java
        └── scala
            └── HelloWorld.scala

在运行gradle build之后,我得到了这个构建文件夹:
 build
 ├── classes
 │   └── main
 │       ├── HelloWorld$.class
 │       ├── HelloWorld.class
 │       ├── JavaClass.class
 │       ├── foo$_main.class
 │       ├── foo$fn__64.class
 │       ├── foo$loading__5340__auto____62.class
 │       ├── foo.class
 │       └── foo__init.class
 ├── dependency-cache
 ├── distributions
 │   ├── init-proj-1.0.0.tar
 │   └── init-proj-1.0.0.zip
 ├── libs
 │   └── init-proj-1.0.0.jar
 ├── scripts
 │   ├── init-proj
 │   └── init-proj.bat
 └── tmp
     ├── compileJava
     │   └── emptySourcePathRef
     ├── compileScala
     └── jar
         └── MANIFEST.MF

我还没有达到互操作的目的(从scala调用clojure,反之亦然,调用it is discussed here),但是至少它正在生成.class文件。

关于java - 可以在Gradle中混合.java和.clojure和.scala文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29562000/

相关文章:

scala - 为什么Scala有SeqView而没有SetView?

scala - 标记为 "unused import"的包语句

java - 如何从 Java Rest Web 服务返回 ajax 中的值?

java - 完成xslt新手。如何在xslt 1.0版中合并这2个xml源。应用分组和排序?

java - 在其他操作系统上存储文件时 AppData (Windows) 的替代方案

scala 路径依赖类型和类型级别证明

android - 使用 android map utils library 生成签名 apk 时出错

java - 找不到参数的方法实现() [com.google.firebase :firebase-core:16. 0.1]

java - 您可以使用 Gradle 有条件地准备任务吗?

java - 带有(太多)复杂对象的 Restful 架构问题