У меня есть многомодульный проект Gradle в Kotlin, использующий Jigsaw JPMS, и если у меня нет для каждого модуля:
compileKotlin {
...
destinationDir = compileJava.destinationDir
}
, тогда я get (для каждого модуля, в данном случае uno_awt
):
IdeaProjects \ uno-sdk \ uno-awt \ src \ main \ java \ module-info. java: 16: ошибка : пакет пуст или не существует: uno.awt exports uno.awt;
Однако destinationDir = compileJava.destinationDir
выдает следующее предупреждение:
Использовались устаревшие функции Gradle в этой сборке, что делает его несовместимым с Gradle 7.0. Используйте '--warning-mode all', чтобы показать отдельные предупреждения об устаревании.
Итак, повторный запуск с --warning-mode all
Я получаю:
Копирование или архивирование дубликатов пути со стратегией дубликатов по умолчанию устарели. Это планируется удалить в Gradle 7.0
, который можно решить, указав дублирующую стратегию, например, с помощью следующего:
jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE }
Тем не менее, Илья Горбунов не дублирует каталог в своих примерах здесь (он также прямо говорит , что это не требуется)
Итак, мой вопрос по существу:
почему это кажется обязательным в моем случае?
это нормально или это какой-то хитрый обходной путь, и есть "правильный способ" сделать это?
Характеристики:
- kotlin 1.3.70
- gradle 6.2.2
- ojdk 11.05