构建scala代码时出现Gradle错误

时间:2015-06-18 02:03:15

标签: java scala ant gradle build.gradle

我在构建scala代码时遇到gradle问题。

$ gradle makeJar

错误:org.gradle.api.tasks.TaskExecutionException:

任务执行失败':compileScala'。

引起:java.lang.NoClassDefFoundError:scala / Function1

$ gradle -v

Gradle版本 - 1.6

groovy - 1.8.6

Ant - 1.8.4

常春藤 - 2.2.0

jvm - 1.7.0_55

操作系统 - Linux 2.6x

我的build.gradle文件位于 -

之下
sourceCompatibility = '1.6'
apply plugin: 'scala'
def mypath = 'file://'+new File('test/lib').absolutePath
repositories {
flatDir dirs:"${mypath}"
}
configurations{
 scalaPackage
}
sourceSets{
 main{
  scala{
    srcDirs = ['test/src/scala']
  }
 }
}
dependencies {
  compile fileTree(dir: mypath, includes: ['*.jar'])
  }
  task sourcePath{
    sourceSets.main.scala.srcDirs = sourceSets.main.scala.srcDirs
    sourceSets.main.java.srcDirs = []
  }
  task makeJar(type: Jar, dependsOn: compileScala){
    archivename = "mytest.jar"
    destinationDir = file("test/oplib")
    from "build/classes"
    classpath = configurations.scalaPackage
  }
  compileScala.dependsOn sourcePath

=============================================== ===========

这里,我的scala源代码出现在 - ./test/src/scala/test.scala

scala jar文件存在于 - ./test/lib

预期输出位置 - ./test/oplib

build.gradle文件是否有任何错误,可能导致此错误。请建议。

非常感谢,Pralay

3 个答案:

答案 0 :(得分:0)

我带着你的build.gradle文件并使用带Gradle版本2.3的Gradle Wrapper启动它

首先使用gradlew

然后我做了3次更正:

apply plugin: 'scala'
sourceCompatibility = '1.6'
def mypath = 'file://'+new File('test/lib').absolutePath
repositories {
flatDir dirs:"${mypath}"
}
configurations{
 scalaPackage
}
sourceSets{
 main{
  scala{
    srcDirs = ['test/src/scala']
  }
 }
}
dependencies {
  compile fileTree(dir: mypath, includes: ['*.jar'])
  }
  task sourcePath{
    sourceSets.main.scala.srcDirs = sourceSets.main.scala.srcDirs
    sourceSets.main.java.srcDirs = []
  }
  task makeJar(type: Jar, dependsOn: compileScala){
    archiveName = "mytest.jar"
    destinationDir = file("test/oplib")
    from "build/classes"
    // classpath = configurations.scalaPackage
  }
  compileScala.dependsOn sourcePath
  1. 在Scala插件导入后移动行sourceCompatibility
  2. 撰写archiveName
  3. archivename版本
  4. 评论classpath
  5. 然后我运行gradlew tasksgradlew makeJar而没有错误。

答案 1 :(得分:0)

Scala项目需要声明一个scala-library依赖项 在build.gralde文件中添加:

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.scala-lang:scala-library:2.11.1'
}

答案 2 :(得分:0)

如果您使用spark-core_2.11版本1.2.0,则可以按如下方式定义依赖项:

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.apache.spark:spark-core_2.11:1.2.0'
}

此依赖项具有Scala

org.scala-lang / scala-library / from 2.11.2 to 2.11.7

作为间接依赖参见

Maven Repository Search for spark-core