Kotlin, JPMS и Gradle многомодульный проект - PullRequest
0 голосов
/ 18 марта 2020

У меня есть многомодульный проект 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
...