【问题标题】:Can In Gradle mix .java and .clojure and .scala files可以在 Gradle 中混合 .java 和 .clojure 以及 .scala 文件
【发布时间】:2015-04-10 12:52:33
【问题描述】:

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

【问题讨论】:

    标签: java scala gradle clojure


    【解决方案1】:

    我从一个混合了 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 文件。

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 2011-05-25
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多