美文网首页
(8)依赖管理

(8)依赖管理

作者: 不知名的蛋挞 | 来源:发表于2018-10-21 15:16 被阅读3次

    依赖分组

    Gradle将对依赖进行分组,比如编译Java时使用的是这组依赖,运行Java时又可以使用另一组依赖。每一组依赖称为一个Configuration,在声明依赖时,我们实际上是在设置不同的Configuration。要定义一个Configuration,我们可以通过以下方式完成:

    configurations {
       myDependency
    }
    

    以上只是定义了一个名为myDependency的Configuration,我们并未向其中加入依赖。我们可以通过dependencies()方法向myDependency中加入实际的依赖项:

    dependencies {
       myDependency 'org.apache.commons:commons-lang3:3.0'
    }
    

    以上,我们将Apache的commons加入了myDependency中。之后,如果有Task需要将Apache commons加入到classpath中,我们可以通过以下方式进行获取:

    task showMyDependency << {
       println configurations.myDependency.asPath
    }
    

    依赖配置阶段

    我们来看一个Java项目,该项目依赖于SLF4J,而在测试时依赖于Junit。在声明依赖时,我们可以通过以下方式进行设置:

    dependencies {
       compile 'org.slf4j:slf4j-log4j12:1.7.2'
       testCompile 'junit:junit:4.8.2'
    }
    

    我们并没有定义名为compile和testCompile的Configuration,这是这么回事呢?原因在于,java Plugin会自动定义compile和testCompile,分别用于编译Java源文件和编译Java测试源文件。另外,java Plugin还定义了runtime和testRuntime这两个Configuration,分别用于在程序运行和测试运行时加入所配置的依赖。也就是:

    • 源代码的两个阶段:compile(编译)、runtime(运行时)
    • 测试代码的两个阶段:testCompile、testRuntime

    它们的依赖关系如下:

    • 在编译阶段依赖的那么在运行时也会依赖。
    • 如果运行时依赖的编译时不一定会依赖。
    • 如果源代码依赖的那么测试代码也会依赖。
    • 测试代码依赖的源代码不一定会依赖。

    相关文章

      网友评论

          本文标题:(8)依赖管理

          本文链接:https://www.haomeiwen.com/subject/jsmuzftx.html