gradle - 在委托给 gradle 的 IntelliJ 运行配置中使用“compileOnly”范围依赖项
问题描述
我正在使用 install4j 来捆绑我的 Java 应用程序。由于 install4j 带来了自己的 api,我将它作为 'compileOnly' 依赖项添加到 build.gradle
compileOnly(files("${project.projectDir}/lib/i4jruntime.jar"))
当我运行 gradle 任务run
时,应用程序按预期启动。所以我假设run
任务包括类路径中的 compileOnly 依赖项。
但是,当我使用 IntelliJ 运行配置来运行我的 Main 类时,它会因 ClassNotFoundException 而失败:
java.lang.ClassNotFoundException: com.install4j.api.launcher.SplashScreen$ConnectionException
对我来说很明显,我必须在运行配置中检查“包含具有“提供”范围的依赖项”,但是执行仍然失败。
令人惊讶的是,只有当我将构建和运行任务委托给 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
}
但是我仍然认为使用“提供”范围检查包含依赖项应该使 IntelliJ 运行配置工作。至少这是我作为用户的期望。