Gradle получить путь к классам Java внутри build.gradle - PullRequest
0 голосов
/ 04 июля 2018

FindBugs выводит ошибки, такие как «Отсутствующие классы отсутствуют ...», поэтому я проверил его путь к классу, написав это в моем build.gradle:

findbugsMain {
    classpath.each {
        println it
    }
}

Он ничего не печатает, что означает, что путь к классу пуст. Из различных вопросов о SO я понял, что он должен содержать путь к классам Java (каждый класс, написанный как отсутствующий, является собственным классом).

Я не хочу жестко кодировать это, потому что этот проект должен работать на нескольких компьютерах. Путь к классам нативных классов Java должен быть найден в самом Gradle (он должен быть где-то! Но я не могу найти где).

Я попытался добавить classpath сам, используя:

findbugsMain {
    classpath += sourceSets.main.output
    classpath += sourceSets.main.compileClasspath
    classpath += sourceSets.main.runtimeClasspath
    classpath += sourceSets.test.output
    classpath += sourceSets.test.compileClasspath
    classpath.each {
        println it
    }
}

но это печатает:

/.../build/classes/java/main
/.../build/resources/main
/.../build/classes/java/test
/.../build/resources/test
/.../.gradle/caches/.../junit-4.12.jar
/.../.gradle/caches/.../hamcrest-core-1.3.jar

Это все еще не включает Java JARS ...

Вот пример отсутствующих классов:

> Task :findbugsMain 
The following classes needed for analysis were missing:
  java.lang.Object
  java.io.PrintStream
  java.lang.NoSuchFieldError
  java.lang.System

> Task :findbugsTest 
The following classes needed for analysis were missing:
  java.lang.Object
  java.lang.NoSuchFieldError

Я знаю, что очень близок к тому, чтобы найти решение, но на данный момент я не вижу правильной линии ...


Редактировать после комментариев: пытаюсь использовать JAVA_HOME. Согласно этот вопрос :

println org.gradle.internal.jvm.Jvm.current().getJavaHome()

отпечатков /usr/lib/jvm/java-10-openjdk-amd64. Однако я ожидаю, что это домашняя страница Java 8, потому что это дает JVM, используемую для запуска Gradle, а не ту, которая использовалась для компиляции проекта (указано sourceCompatibily = '1.8' в моем файле build.gradle).

...