我可以将我的依赖项和存储库放在另一个文件中吗?

时间:2016-10-14 06:22:13

标签: gradle android-gradle

我要求我的某些依赖项位于单独的文件中。我怎么能做到这一点? docs.gradle.org上的一个示例是:

List groovy = ["org.codehaus.groovy:groovy-all:2.4.7@jar",
           "commons-cli:commons-cli:1.0@jar",
           "org.apache.ant:ant:1.9.6@jar"]
List hibernate = ['org.hibernate:hibernate:3.0.5@jar',
              'somegroup:someorg:1.0@jar']

dependencies {
    runtime groovy, hibernate
}

这样的东西可行,但我也想在同一个文件中指定我的存储库。

编辑:

我提出的解决方案

stuff.gradle

repositories {
    maven {
        credentials {
            username 'stuff'
            password 'stuff'
        }
        url 'stuff'
    }
}

dependencies {
    compile 'things'
}

并在build.gradle

apply from: 'path/to/stuff.gradle'

dependencies之后,虽然我不确定它是否有所作为。这简直太简单了。除了apply语句之外,build.gradle没有任何更改,它仍然具有正常的repositoriesdependencies闭包。感谢Opal让我走上正轨。

1 个答案:

答案 0 :(得分:4)

你走了:

<强> lol.gradle:

ext.repos = { mavenCentral(); mavenLocal() }

ext.groovy = [
          "org.codehaus.groovy:groovy-all:2.4.7@jar",
           "commons-cli:commons-cli:1.0@jar",
           "org.apache.ant:ant:1.9.6@jar",
           ]
ext.hibernate = [
          'org.hibernate:hibernate:3.0.5@jar',
          ]

<强>的build.gradle

apply from: 'lol.gradle'
apply plugin: 'java'

repositories repos

dependencies {
  runtime groovy, hibernate
}

由于存储库可以保存为列表,因此保持存储库没有变通方法的最简单方法是使用闭包。如果您使用列表来保存存储库,则会因mavenLocalmavenCentral的方法解析错误而失败。

如果您希望将存储库保留为列表,则可以使用以下代码:

<强> lol.gradle

ext.repos = ['mavenCentral', 'mavenLocal',]

ext.groovy = [
          "org.codehaus.groovy:groovy-all:2.4.7@jar",
           "commons-cli:commons-cli:1.0@jar",
           "org.apache.ant:ant:1.9.6@jar",
           ]
ext.hibernate = [
          'org.hibernate:hibernate:3.0.5@jar',
          ]

<强>的build.gradle

apply from: 'lol.gradle'
apply plugin: 'java'

repositories { r ->
  repos.each { n -> r."$n"() }
}

dependencies {
  runtime groovy, hibernate
}