未解决的参考war.getWebAppDir()

时间:2018-11-17 04:09:15

标签: gradle-kotlin-dsl

在我的项目中,我应用WAR plugin并致电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

2 个答案:

答案 0 :(得分:0)

我正在使用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任务中找到该属性。

因此,尝试通过战争任务调用它会产生错误。

您可以尝试启用日志和stacktrace并共享它们吗? 我只是在学习gradle,而不是专家,甚至是中级。只是尝试通过帮助他人学习来学习。

修改1开始

尝试使用Gradle 5.0-rc-3。在我的案例中也证明了类似的行为。与上面的输出相同。

编辑1 END

答案 1 :(得分:0)

我问this question on the Gradle-Kotlin-dsl github sitePaul Merlin已回答。

第5级引入了任务访问器。因此,tasks {}块中的war现在解析为War task的task.war,而不是解析为具有此WarPluginConvention属性的webAppDir的project.war。这可以通过从IDE导航到webAppDir的源来发现,也可以通过打印战争来了解它的含义来发现。您应该在任务{}块中将旧的4.10.2 war.getWebAppDir()调用更新为5.0方式project.war.getWebAppDir()