Как изменить путь к классу compileTestScala, чтобы он указывал на файл манифеста файла jar, созданного с помощью задачи jar в gradle - PullRequest
0 голосов
/ 07 октября 2019

Я использую Gradle на Windows, и, к сожалению, путь к классу превышает предел пути Windows. Поэтому я пробую обходной путь, указанный в Как я могу создать jar-путь в Gradle , в котором я создаю новый jar-файл с файлом манифеста, содержащим весь путь к классу. Я могу создать новый jar-файл с правильным classpath, добавленным в его файл манифеста.

Однако я новичок в gradle и не смог указать путь к классу scala-plugin для задач в файле манифестаjar.

В результате я продолжаю получать следующую ошибку в gradle: $ gradlew compileTestScala Не удалось выполнить задачу ': compileTestScala'.

Невозможно определить путь к классу Scala, поскольку нетБиблиотека Скала Jar была найдена. Объявляет ли корневой проект test-saddle зависимость от scala-библиотеки? Ищите classpath: набор файлов.

Я попытался установить classpath для pathingJarTest.archivePath, для файлов (pathingJarTest.archivePath), но ни один из них, похоже, не заполняет classpath правильно, и я не могунайти любую документацию для справки с этим

plugins {
    // Apply the scala plugin to add support for Scala
    id 'scala'
}

repositories {
    mavenLocal()
    maven { url "http://artifactory-maven-repo" }


}
dependencies {
    // Use Scala 2.12 in our library project
    implementation 'org.scala-lang:scala-library:2.12.6'
    implementation 'org.scala-saddle:saddle-core_2.12:1.3.7'

    // Use Scalatest for testing our library
    testImplementation 'junit:junit:4.12'
    testImplementation 'org.scalatest:scalatest_2.12:3.0.8'
    testImplementation 'org.scala-lang:scala-library:2.12.6'

    // Need scala-xml at test runtime
    testRuntimeOnly 'org.scala-lang.modules:scala-xml_2.12:1.2.0'
}

test {
    testLogging {
        events "passed", "skipped", "failed", "standardOut", "standardError"
    }
}



task pathingJarTest(type: Jar ) {
    archiveAppendix = "Pathing"
    doFirst {
        manifest {
//            attributes "Class-Path": configurations.testCompile.files.join(" ")
            attributes "Class-Path": sourceSets.test.runtimeClasspath.files.join(" ")
        }
        println "Printing files in pathingJarTest" +files(pathingJarTest.archivePath) + "-----"
    }

}

compileTestScala {
    dependsOn(pathingJarTest)
    println "Printing files in pathingJarTest" +pathingJarTest.archivePath + "-----"
    classpath = files(pathingJarTest.archivePath)

}

task CompileTask {
    doFirst { println "Compiling ..." +" new string"
        sourceSets.main.runtimeClasspath.each { println it}
        println "---------------------"
    println sourceSets.test.runtimeClasspath.files.join(" ") }

    doLast { println "Compiling done!" }
}


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

}

test.dependsOn scalaTest // so that running "test" would run this first, then the JUnit tests

с вышеупомянутым build.gradle, я продолжаю получать следующую ошибку в задаче compileTestScala:

FAILURE: сборка завершилась с исключением.

  • Что пошло не так: не удалось выполнить задачу ': compileTestScala'.

    Невозможно определить путь к классу Scala, поскольку Jar библиотеки Scala не найден. Объявляет ли корневой проект test-saddle зависимость от scala-библиотеки? Найденный путь к классу: коллекция файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...