在Gradle> 5.0中为依赖项锁定创建任务

时间:2019-03-22 17:08:14

标签: gradle dependencies gradlew

我想创建一个要执行的任务

  

依赖关系--update-locks''

我有一个配置:

function searchArrayInArray(array1, array2) {
       var result = [];
       let set = new Set();
       for(el of array2){
            set.add(el);
       }

       for (var j = 0, e = array1.length; j < e; j++){
           var element = array1[j];
           if( set.has(element) ){
               result.push(element);
           }
       }
       return result;
    }

我尝试

dependencyLocking {
    lockAllConfigurations()
}

但是有:

  
      
  • 出了什么问题:无法确定任务':lockDependencies'的依赖关系。      
        

    在根项目中找不到路径为'--update-locks '的任务

      
  •   

1 个答案:

答案 0 :(得分:0)

您不能将Gradle命令行参数作为任务依赖项传递,这就是您上面的错误所在。

使用--write-locks--update-locks写锁的状态实际上是在构建生命周期的早期发生的。

您可以使用以下命令从某种程度上控制它: *在您的构建脚本中创建一个占位符任务 *在settings.gradle(.kts)中,从命令行查询所请求的任务,如果存在,请更改启动参数:

if (startParameter.taskNames.contains('placeHolder')) {
    startParameter.setWriteDependencyLocks(true)
}

请注意,如果您尝试锁定构建本身的类路径,则这不是一个选择,这是使用命令行标志的动机之一。

还请注意,这仅允许将--update-locks *:*之类的标记替换为updateLocks之类的任务调用,但如果将该任务作为其他任务的依赖项进行连接,则将不起作用,因为它需要明确要求。而且,在计算任务图之后 之后执行开始参数突变在生命周期中为时已晚。