未解决的引用 war.getWebAppDir()
Unresolved reference war.getWebAppDir()
在我的项目中,我应用了 WAR plugin and have call war.getWebAppDir()。
在具有 kotlin DSL 1.0-rc-6 的 Gradle 4.10.2 中,调用工作正常。
但是在具有 Kotlin DSL 1.0.3 的 Gradle 5.0-rc-3 中,调用失败并显示消息 Unresolved reference : getWebAppDir
我正在使用 gradle 4.10.2,调用 war.getWebAppDir() 在我的情况下不起作用。构建失败说没有找到 属性。不确定为什么它适用于您的情况。
通话:
logger.info " web app dir is : ${war.getWebAppDir()}"
错误:
Could not find method getWebAppDir() for arguments [] on task ':war' of type org.gradle.api.tasks.bundling.War
快速搜索后,我发现 getWebAppDir 是由 WarPluginConvention 而不是 WAR 插件本身提供的 属性。所以只调用了 getWebAppDir() 并且在我的情况下似乎一切正常。
通话:
logger.info " web app dir is : ${getWebAppDir()}"
输出:
web app dir is : D:\Practice\Gradle\GradleInAction\todo-webapp-customized\webfiles
我不确定这是否与 Kotlin DSL 完全相关,因为它在失败日志中明确表示无法在 WAR 任务中找到 属性。
因此尝试通过 war 任务调用它会出错。
您能否尝试启用日志和堆栈跟踪并共享它们。
我只是在学习gradle,不是专家,甚至不是中级。只是尝试通过帮助他人学习来学习。
编辑 1 开始
尝试使用 Gradle 5.0-rc-3。在我的案例中展示了类似的行为。与上面相同的输出。
编辑 1 结束
我问了this question on the Gradle-Kotlin-dsl github site. It was answered by Paul Merlin。
Gradle 5 引入了任务访问器。所以现在 tasks {}
块中的 war 解析为 tasks.war,即 War task, instead of resolving to project.war which is the WarPluginConvention that has this webAppDir 属性。这可以通过从 IDE 导航到 webAppDir 的源代码或打印 war 来了解它是什么来发现。您应该在任务 {} 块中将旧的 4.10.2 war.getWebAppDir()
调用更新为 5.0 方式 project.war.getWebAppDir()
。
在我的项目中,我应用了 WAR plugin and have call war.getWebAppDir()。 在具有 kotlin DSL 1.0-rc-6 的 Gradle 4.10.2 中,调用工作正常。 但是在具有 Kotlin DSL 1.0.3 的 Gradle 5.0-rc-3 中,调用失败并显示消息 Unresolved reference : getWebAppDir
我正在使用 gradle 4.10.2,调用 war.getWebAppDir() 在我的情况下不起作用。构建失败说没有找到 属性。不确定为什么它适用于您的情况。
通话:
logger.info " web app dir is : ${war.getWebAppDir()}"
错误:
Could not find method getWebAppDir() for arguments [] on task ':war' of type org.gradle.api.tasks.bundling.War
快速搜索后,我发现 getWebAppDir 是由 WarPluginConvention 而不是 WAR 插件本身提供的 属性。所以只调用了 getWebAppDir() 并且在我的情况下似乎一切正常。
通话:
logger.info " web app dir is : ${getWebAppDir()}"
输出:
web app dir is : D:\Practice\Gradle\GradleInAction\todo-webapp-customized\webfiles
我不确定这是否与 Kotlin DSL 完全相关,因为它在失败日志中明确表示无法在 WAR 任务中找到 属性。
因此尝试通过 war 任务调用它会出错。
您能否尝试启用日志和堆栈跟踪并共享它们。 我只是在学习gradle,不是专家,甚至不是中级。只是尝试通过帮助他人学习来学习。
编辑 1 开始
尝试使用 Gradle 5.0-rc-3。在我的案例中展示了类似的行为。与上面相同的输出。
编辑 1 结束
我问了this question on the Gradle-Kotlin-dsl github site. It was answered by Paul Merlin。
Gradle 5 引入了任务访问器。所以现在 tasks {}
块中的 war 解析为 tasks.war,即 War task, instead of resolving to project.war which is the WarPluginConvention that has this webAppDir 属性。这可以通过从 IDE 导航到 webAppDir 的源代码或打印 war 来了解它是什么来发现。您应该在任务 {} 块中将旧的 4.10.2 war.getWebAppDir()
调用更新为 5.0 方式 project.war.getWebAppDir()
。