我花了最后几个小时试图找到符合我要求的解决方案,但是没有运气:
我有一项任务,必须在特定路径上运行一些逻辑:
task run(type: MyPlugin) {
pathForPlugin = myPath //Defined as a property in another gradle file
}
我想在另一个任务中动态设置“pathForPlugin”属性,因为必须从某些配置文件中读取它。
task initPaths(type: PathFinder) {
configurationFile = 'C:\\myConfig.conf'
}
myConfig.conf如下所示:
pathForPlugin = 'C:\\Correct\\Path'
问题是“initPaths”必须在“运行”的配置阶段之前运行。
我为此尝试了几种方法(GradleBuild任务,dependsOn,对“延迟配置”使用插件中的属性),但是每种方法仅在执行阶段生效,导致“pathForPlugin”始终保持其默认值。
有什么办法可以实现这一目标,还是应该在Gradle构建之外寻找其他解决方案?
最佳答案
我找到了解决问题的方法:
我没有定义任务“initPaths”,而是直接在构建脚本中使用了Java类“Pathfinder”:
import mypackage.PathFinder;
new PathFinder(project).run()
您只需要确保这部分超出了使用属性的任务的定义。
我承认这有点“棘手”的解决方案,但可以满足我的要求。
关于gradle - 在另一个任务中的一个任务的配置阶段中设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53168947/