升级到4.2时,Gradle无法找到Scala测试

时间:2017-09-26 15:36:10

标签: scala gradle scalatest

我有一个依赖Scala和Gradle作为构建工具的项目暂停了一段时间。我回到它,并首先将Gradle升级到4.2(之前的版本是3.2)。

在升级之后,我无法再构建我的项目,它总是在测试中失败。例如,这是我得到的输出:

kbreconstruction.TestBiasComponents > initializationError FAILED
java.lang.NoSuchMethodError at TestBiasComponents.scala:23

其中第23行只是

describe("...")
最新的声明。 几个月前唯一改变的是我删除了一些不再工作的maven存储库(以前没有使用过)。 我得到的实际错误是

java.lang.NoSuchMethodError: scala.runtime.ObjectRef.create(Ljava/lang/Object;)Lscala/runtime/ObjectRef;

这看起来有一个Scala版本不匹配,但我想知道它之前是如何工作的呢? 之前有没有人有类似的问题?

我的build.gradle看起来像这样

version '1.2'

apply plugin: 'java'
apply plugin: 'scala'
apply plugin: 'idea'
apply plugin: 'maven'

apply plugin:'application'
mainClassName = 'CommandLine'

ext {
    scalaVersion = '2.11.11'
    scalaLibVersion = '2.11.11'
}


buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'
    }
}

apply plugin: 'com.github.johnrengelman.shadow'


repositories {
    mavenCentral()

    maven {
        url "http://artifactory.info.ucl.ac.be/artifactory/libs-release"
    }

    flatDir {
        dirs 'libs'
    }
}


dependencies {
    compile 'org.scala-lang:scala-library:2.11.8'

    //parsing
    compile 'com.github.scopt:scopt_2.11:3.5.0'

    //tweety and it's missing dependencies
    compile'net.sf.tweety:tweety-full:1.8'
    compile 'org.ojalgo:ojalgo:35.0.1'

    // logging
    compile 'ch.qos.logback:logback-classic:1.1.7'
    compile 'ch.qos.logback:logback-core:1.1.7'
    compile'org.slf4j:slf4j-api:1.7.21'
    //compile 'org.slf4j:slf4j-simple:1.7.21'
    //compile 'org.clapper:grizzled-scala_2.11:3.0.0'
    compile 'org.clapper:grizzled-slf4j_2.11:1.2.0'

    // JaCoP library
    compile 'org.jacop:jacop:4.4.0'

    //OscaR
    compile 'oscar:oscar-cp_2.11:3.1.0'

    //missing libraries directory
    compile fileTree(dir: 'libs', include: ['*.jar'])

    testCompile group: 'junit', name: 'junit', version: '4.+'
    testCompile "org.scalatest:scalatest_2.11:3.0.0"
}

compileScala {
    scalaCompileOptions.additionalParameters = [ '-feature' ]
}

idea {
    module {
        excludeDirs += file('.idea')
        inheritOutputDirs = true
        downloadJavadoc = true
        downloadSources = true
    }
}

task scalatest(dependsOn: ['testClasses'], type: JavaExec) {
    main = 'org.scalatest.tools.Runner'
    args = ['-R', 'build/classes/test', '-o']
    classpath = sourceSets.test.runtimeClasspath
}


task wrapper(type: Wrapper) {
    gradleVersion = '4.2' //version required
}


jar {
    manifest {
        attributes 'Main-Class': mainClassName
    }
}

与IntelliJ相同 - 它不再执行测试。 查看gradle依赖项的输出向我指出了这个

+--- net.sf.tweety:action:1.9
|    |    +--- net.sf.tweety:commons:1.9
|    |    |    +--- ch.qos.logback:logback-core:0.9.30 -> 1.1.7
|    |    |    +--- ch.qos.logback:logback-classic:0.9.30 -> 1.1.7
|    |    |    |    +--- ch.qos.logback:logback-core:1.1.7
|    |    |    |    \--- org.slf4j:slf4j-api:1.7.20 -> 1.7.21
|    |    |    \--- org.slf4j:log4j-over-slf4j:1.6.3
|    |    |         \--- org.slf4j:slf4j-api:1.6.3 -> 1.7.21
|    |    +--- net.sf.tweety.logics:fol:1.9
|    |    |    +--- net.sf.tweety.logics:commons:1.9
|    |    |    |    +--- net.sf.tweety:commons:1.9 (*)
|    |    |    |    \--- net.sf.tweety:math:1.9
|    |    |    |         +--- net.sf.tweety:commons:1.9 (*)
|    |    |    |         +--- org.apache.commons:commons-math:2.1
|    |    |    |         +--- org.apache.commons:commons-math3:3.2
|    |    |    |         +--- gov.nist.math:jama:1.0.3
|    |    |    |         +--- org.slf4j:log4j-over-slf4j:1.6.3 (*)
|    |    |    |         +--- org.ojalgo:ojalgo:35.0 -> 35.0.1
|    |    |    |         \--- com.dbtsai.lbfgs:lbfgs:0.1
|    |    |    |              \--- org.scala-lang:scala-library:2.10.3 -> 2.11.11

但似乎依赖已经取代了旧的scala库版本。

0 个答案:

没有答案