Похоже, что в проект включена недопустимая зависимость, по крайней мере для плагина, поскольку он не может с ней справиться.
TL; DR : 'com.sun.xml.ws:jaxws-ri:2.3.2'
содержит почтовый индекс, а не банку, и плагин не может найти действительный артефакт.
Длинный ответ
Без клонирования и отладки плагина, вот как вы можетевыясните, почему существует исключение нулевого указателя.
Исключение показывает:
java.lang.NullPointerException
at org.beryx.runtime.util.Util.getArtifact(Util.groovy:75)
at org.beryx.runtime.util.SuggestedModulesBuilder.getProjectModules(SuggestedModulesBuilder.groovy:37)
, поэтому, если вы зайдете в плагин хранилище и проверьте эти два класса:
первый использует зависимости пути к классам времени выполнения, чтобы найти ввторой файл каждого артефакта.
Итак, я создал эту задачу на основе исходного кода:
task myTask () {
def deps = project.configurations['runtimeClasspath'].resolvedConfiguration.firstLevelModuleDependencies;
for (d in deps) {
println "dep: $d with $d.moduleArtifacts"
def artifact = d.moduleArtifacts.find { it.classifier } ?: d.moduleArtifacts[0]
if (artifact != null) {
println "f: $artifact -> ${artifact.file}"
} else {
println "f is null"
}
}
}
Если вы запустите эту задачу:
./gradlew myTask
для каждой действительной зависимости вы получите что-то вроде:
dep: javax.annotation:javax.annotation-api:1.3.2;runtime with [javax.annotation-api.jar (javax.annotation:javax.annotation-api:1.3.2)]
f: javax.annotation-api.jar (javax.annotation:javax.annotation-api:1.3.2) -> C:\Users\<user>\.gradle\caches\modules-2\files-2.1\javax.annotation\javax.annotation-api\...
однако для com.sun.xml.ws:jaxws-ri:2.3.2
вы получите:
dep: com.sun.xml.ws:jaxws-ri:2.3.2;runtime with []
f null
Так что жеОнг с этой зависимостью?
Давайте посмотрим на Maven Central : вы обнаружите, что «артефакт» оказывается почтовым индексом: jaxws-ri-2.3.2.zip
.
Следовательно, плагин не 'Не знаю, как с этим справиться, поскольку он ожидает обычные банки ...
Решение
Чтобы избежать работы с zip, удалите на данный момент эту зависимость изclasspath времени выполнения.
Поскольку ваш проект не работает, вы можете просто сделать:
compileOnly 'com.sun.xml.ws:jaxws-ri:2.3.2'
Наконец, вы можете выполнить:
./gradlew suggestModules
и получить действительный результат:
modules = [
'java.logging',
'java.xml',
'java.desktop',
'jdk.unsupported',
'jdk.jfr',
'jdk.unsupported.desktop',
'java.datatransfer',
'java.scripting']
Конечно, вы все равно будете пропускать деталь из исключенной зависимости.
Сообщить о проблеме
Вы также должны сообщить о проблемек плагину средство отслеживания ошибок , ссылающееся на этот пост.
Быстрое исправление в Utils:getArtifact
вроде:
artifact != null ? artifact.file : null
предотвратит NPE, однако, вероятно, естьлучший способ извлечь почтовый индекс и осмотреть банки, которые в нем могут быть.