Использование зависимостей области «compileOnly» в IntelliJ Run Configuration, делегированной для gradle - PullRequest
0 голосов
/ 01 апреля 2020

Я использую install4j для комплектации моего Java приложения. Так как install4j содержит свой собственный API, я добавил его как зависимость 'compileOnly' в build.gradle

compileOnly(files("${project.projectDir}/lib/i4jruntime.jar"))

Когда я запускаю задачу gradle run, приложение запускается, как и ожидалось. Поэтому я предполагаю, что задача run включает зависимости compileOnly в classpath.

Однако, когда я использую конфигурацию IntelliJ Run для запуска моего основного класса, она завершается неудачей с ClassNotFoundException:

java.lang.ClassNotFoundException: com.install4j.api.launcher.SplashScreen$ConnectionException

It Мне казалось очевидным, что я должен был проверить «Включить зависимости с« Предоставленной »областью действия» в Конфигурацию запуска, однако выполнение все равно не выполняется.

Удивительно, что Конфигурация запуска завершается неудачно, только когда я делегирую задачи сборки и запуска » Gradle. Если я выберу «IntelliJ IDEA» в настройках «Построить и запустить с помощью», конфигурация запуска будет работать как положено.

Пример проекта можно найти на GitHub . Я запускаю IntelliJ 2019.3.4 на Windows и с OpenJDK 11.0.1

Это ошибка в IDE или я что-то упускаю?


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

tasks.run {
  classpath = configurations.compileClasspath + sourceSets.main.output
}

Однако я все еще думаю, что проверка Включение зависимостей с помощью «Предоставлено» scope должен заставить работать конфигурацию IntelliJ. По крайней мере, это мое ожидание как пользователя.

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