Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle 如何避免在每个构建脚本中重复插件声明?_Gradle - Fatal编程技术网

Gradle 如何避免在每个构建脚本中重复插件声明?

Gradle 如何避免在每个构建脚本中重复插件声明?,gradle,Gradle,我有一个Gradle构建,它使用apply from调用各种其他Gradle脚本。主build.gradle和每个子脚本都使用相同的构建脚本插件(特别是gradle货物插件) 我实现这一点的唯一方法是在每个脚本中重复插件声明: build.gradle: buildscript { repositories { jcenter() } dependencies { classpath 'org.gradle.api.plugins:grad

我有一个Gradle构建,它使用
apply from
调用各种其他Gradle脚本。主
build.gradle
和每个子脚本都使用相同的构建脚本插件(特别是gradle货物插件)

我实现这一点的唯一方法是在每个脚本中重复插件声明:

build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.gradle.api.plugins:gradle-cargo-plugin:1.5.1'
    }
}

apply from: 'other.gradle'

// do something with the cargo plugin
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.gradle.api.plugins:gradle-cargo-plugin:1.5.1'
    }
}

// do something else with the cargo plugin
other.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.gradle.api.plugins:gradle-cargo-plugin:1.5.1'
    }
}

apply from: 'other.gradle'

// do something with the cargo plugin
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.gradle.api.plugins:gradle-cargo-plugin:1.5.1'
    }
}

// do something else with the cargo plugin
如您所见,
buildscript
部分在每个脚本中重复。更改该依赖项会变得单调乏味且容易出错,但子脚本不会从主
build.gradle
继承该依赖项


有没有一种方法可以解决这个问题,或者允许调用的脚本继承
buildscript
依赖项,或者用另一种方法委托给子脚本,而不是使用
apply from

在Gradle 2.1中可以很好地工作。在
Build.gradle
buildscript
块中声明的构建脚本在脚本插件中可见


新插件门户()中的插件可以在一行中应用,并且不需要
buildscript
块(Gradle 2.1及更高版本)。

我认为这不是答案。当然,OPs复制的构建脚本在两个文件中都可以工作。但是OP提出了一个解决方案,在那里他可以有一个构建依赖项的声明,其他gradle脚本文件可以从中继承。这与插件中buildscript的可见性无关