Можно в Gradle смешивать файлы .java, .clojure и .scala

2

Может в Gradle смешивать файлы.java и.clojure и.scala. Я хочу смешивать несколько языков программирования, просто ищу лучший способ сделать это.

Теги:
gradle
clojure

1 ответ

0

Я начинаю с проекта со смешанной java, scala и clojure. Чтобы включить scala, я просто добавил плагин scala

apply plugin: 'scala'

и раздел зависимости scala от зависимостей:

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

Чтобы включить clojure, я последовал этому ответу.

Мой последний файл 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 я получаю эту 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

Я не дошел до точки interop (вызывая clojure от scala и viceversa, это обсуждается здесь), но по крайней мере он генерирует .class.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню