Gradle Maven 依赖管理 谁借莪1个温暖的怀抱¢ 2022-03-27 05:08 299阅读 0赞 # 仓库管理简介 # 本质上说,仓库是一种存放依赖的容器,每一个项目都具备一个或多个仓库。 Gradle支持以下仓库格式: * Ivy仓库 * [Maven仓库][Maven] * [Flat directory仓库][Flat directory] 我们来看一下,对于每一种仓库类型,我们在构建中应该如何配置。 ## 在构建中加入Ivy仓库 ## 我们可以通过URL地址或本地文件系统地址,将Ivy仓库加入到我们的构建中。 如果想通过URL地址添加一个Ivy仓库,我们可以将以下代码片段加入到*build.gradle*文件中: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> <div> 4 </div> <div> 5 </div> </td> <td> <div> <div> <code>repositories { </code> </div> <div> <code> </code> <code>ivy { </code> </div> <div> <code> </code> <code>url </code> <code>"http://ivy.petrikainulainen.net/repo"</code> </div> <div> <code> </code> <code>}</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> 如果想通过本地文件系统地址添加一个Ivy仓库,我们可以将以下代码片段加入到*build.gradle*文件中: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> <div> 4 </div> <div> 5 </div> </td> <td> <div> <div> <code>repositories { </code> </div> <div> <code> </code> <code>ivy { </code> </div> <div> <code> </code> <code>url </code> <code>"../ivy-repo"</code> </div> <div> <code> </code> <code>}</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> **小贴士:如果你想要获得更多关于Ivy仓库配置的信息,你可以参考以下资源:** * [Section 50.6.6 Ivy Repositories of the Gradle User Guide][] * [The API documentation of the IvyArtifactRepository][] 我们继续,下面是如何在构建中加入Maven仓库。 ## 在构建中加入Maven仓库 ## 与Ivy仓库很类似,我们可以通过URL地址或本地文件系统地址,将Maven仓库加入到我们的构建中。 如果想通过URL地址添加一个Maven仓库,我们可以将以下代码片段加入到*build.gradle*文件中: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> <div> 4 </div> <div> 5 </div> </td> <td> <div> <div> <code>repositories { </code> </div> <div> <code> </code> <code>maven { </code> </div> <div> <code> </code> <code>url </code> <code>"http://maven.petrikainulainen.net/repo"</code> </div> <div> <code> </code> <code>}</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> 如果想通过本地文件系统地址添加一个Maven仓库,我们可以将以下代码片段加入到*build.gradle*文件中: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> <div> 4 </div> <div> 5 </div> </td> <td> <div> <div> <code>repositories { </code> </div> <div> <code> </code> <code>maven { </code> </div> <div> <code> </code> <code>url </code> <code>"../maven-repo"</code> </div> <div> <code> </code> <code>}</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> 在加入Maven仓库时,Gradle提供了三种“别名”供我们使用,它们分别是: * *mavenCentral()*别名,表示依赖是从*Central Maven 2* 仓库中获取的。 * *jcenter()*别名,表示依赖是从*Bintary’s JCenter Maven* 仓库中获取的。 * *mavenLocal()*别名,表示依赖是从本地的Maven仓库中获取的。 如果我们想要将Central Maven 2 仓库加入到构建中,我们必须在*build.gradle*文件中加入以下代码片段: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> </td> <td> <div> <div> <code>repositories { </code> </div> <div> <code> </code> <code>mavenCentral()</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> **小贴士:如果你想要获取更多关于Maven仓库配置的信息,你可以参考这篇文章:** [section 50.6.4 Maven Repositories of the Gradle User Guide][] 我们继续,下面是如何在构建中加入Flat Directory仓库。 ## 在构建中加入Flat Directory仓库 ## 如果我们想要使用Flat Directory仓库,我们需要将以下代码片段加入到*build.gradle*文件中: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> <div> 4 </div> <div> 5 </div> </td> <td> <div> <div> <code>repositories { </code> </div> <div> <code> </code> <code>flatDir { </code> </div> <div> <code> </code> <code>dirs</code> <code>'lib'</code> </div> <div> <code> </code> <code>}</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> 这意味着系统将在*lib*目录下搜索依赖,同样的,如果你愿意的话可以加入多个目录,代码片段如下: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> <div> 4 </div> <div> 5 </div> </td> <td> <div> <div> <code>repositories { </code> </div> <div> <code> </code> <code>flatDir { </code> </div> <div> <code> </code> <code>dirs</code> <code>'libA'</code> <code>, </code> <code>'libB'</code> </div> <div> <code> </code> <code>}</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> **小贴士:如果你想要获得更多关于Flat Directory仓库配置的信息,你可以参考以下资源:** * [Section 50.6.5 Flat directory repository of the Gradle User Guide][] * [Flat Dir Repository post to the gradle-user mailing list][Flat directory] 我们继续,下面要讲的是,如何使用Gradle管理项目中的依赖。 # 依赖管理简介 # 在配置完项目仓库后,我们可以声明其中的依赖,如果我们想要声明一个新的依赖,可以采用如下步骤: 1. 指定依赖的配置。 2. 声明所需的依赖。 让我们看一下详细步骤: ## 配置中的依赖分类 ## 在Gradle中,依赖是按照指定名称进行分类的,这些分类被称为配置项,我们可以使用配置项声明项目的外部依赖。 [Java插件指定了若干依赖配置项][Java],其描述如下: * 当项目的源代码被编译时,*compile*配置项中的依赖是必须的。 * *runtime*配置项中包含的依赖在运行时是必须的。 * *testCompile*配置项中包含的依赖在编译项目的测试代码时是必须的。 * *testRuntime*配置项中包含的依赖在运行测试代码时是必须的。 * *archives*配置项中包含项目生成的文件(如Jar文件)。 * *default*配置项中包含运行时必须的依赖。 我们继续,下面是如何在项目中声明依赖。 ## 声明项目依赖 ## 最普遍的依赖称为外部依赖,这些依赖存放在外部仓库中。一个外部依赖可以由以下属性指定: * *group*属性指定依赖的分组(在Maven中,就是*groupId*)。 * *name*属性指定依赖的名称(在Maven中,就是*artifactId*)。 * *version*属性指定外部依赖的版本(在Maven中,就是*version*)。 **小贴士:这些属性在Maven仓库中是必须的,如果你使用其他仓库,一些属性可能是可选的。打个比方,如果你使用Flat directory仓库,[你可能只需要指定名称和版本][Link 1]。** 我们假设我们需要指定以下依赖: * 依赖的分组是*foo*。 * 依赖的名称是*foo*。 * 依赖的版本是*0.1*。 * 在项目编译时需要这些依赖。 我们可以将以下代码片段加入到*build.gradle*中,进行依赖声明: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> </td> <td> <div> <div> <code>dependencies { </code> </div> <div> <code> </code> <code>compile group: </code> <code>'foo'</code> <code>, name: </code> <code>'foo'</code> <code>, version: </code> <code>'0.1'</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> 我们也可以采用一种快捷方式声明依赖:*\[group\]:\[name\]:\[version\]*。如果我们想用这种方式,我们可以将以下代码段加入到*build.gradle*中: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> </td> <td> <div> <div> <code>dependencies { </code> </div> <div> <code> </code> <code>compile </code> <code>'foo:foo:0.1'</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> 我们也可以在同一个配置项中加入多个依赖,传统的方式如下: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> <div> 4 </div> <div> 5 </div> <div> 6 </div> </td> <td> <div> <div> <code>dependencies { </code> </div> <div> <code> </code> <code>compile (</code> </div> <div> <code> </code> <code>[group: </code> <code>'foo'</code> <code>, name: </code> <code>'foo'</code> <code>, version: </code> <code>'0.1'</code> <code>],</code> </div> <div> <code> </code> <code>[group: </code> <code>'bar'</code> <code>, name: </code> <code>'bar'</code> <code>, version: </code> <code>'0.1'</code> <code>]</code> </div> <div> <code> </code> <code>)</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> 如果采用快捷方式,那可以是这样: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> </td> <td> <div> <div> <code>dependencies { </code> </div> <div> <code> </code> <code>compile </code> <code>'foo:foo:0.1'</code> <code>, </code> <code>'bar:bar:0.1'</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> 自然地,声明属于不同配置项的依赖也是可以的。比如说,如果我们想要声明属于*compile*和*testCompile*配置项的依赖,可以这么做: <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> <div> 4 </div> </td> <td> <div> <div> <code>dependencies { </code> </div> <div> <code> </code> <code>compile group: </code> <code>'foo'</code> <code>, name: </code> <code>'foo'</code> <code>, version: </code> <code>'0.1'</code> </div> <div> <code> </code> <code>testCompile group: </code> <code>'test'</code> <code>, name: </code> <code>'test'</code> <code>, version: </code> <code>'0.1'</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> 同样的,给力的快捷方式又来了( ̄︶ ̄) <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> <div> 4 </div> </td> <td> <div> <div> <code>dependencies { </code> </div> <div> <code> </code> <code>compile </code> <code>'foo:foo:0.1'</code> </div> <div> <code> </code> <code>testCompile </code> <code>'test:test:0.1'</code> </div> <div> <code>}</code> </div> </div> </td> </tr> </tbody> </table> 转载请注明出处:http://duwei.cnblogs.com/ [Maven]: http://maven.apache.org/guides/introduction/introduction-to-repositories.html [Flat directory]: http://gradle.1045684.n5.nabble.com/Flat-Dir-repositories-td1431519.html [Section 50.6.6 Ivy Repositories of the Gradle User Guide]: http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:ivy_repositories [The API documentation of the IvyArtifactRepository]: http://www.gradle.org/docs/current/dsl/org.gradle.api.artifacts.repositories.IvyArtifactRepository.html [section 50.6.4 Maven Repositories of the Gradle User Guide]: http://www.gradle.org/docs/current/userguide/dependency_management.html#sub:maven_repo [Section 50.6.5 Flat directory repository of the Gradle User Guide]: http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:flat_dir_resolver [Java]: http://www.gradle.org/docs/current/userguide/java_plugin.html#tab:configurations [Link 1]: http://www.gradle.org/docs/current/userguide/dependency_management.html#para:dependencies_with_empty_attributes
相关 依赖管理:Maven、Gradle在Java项目中应用问题 在Java项目中,Maven和Gradle都是常见的依赖管理和构建工具。以下是在使用它们时可能出现的一些问题: 1. **依赖冲突**: - Maven通过POM(Pr ╰+攻爆jí腚メ/ 2024年09月12日 06:42/ 0 赞/ 18 阅读
相关 Gradle学习笔记 依赖管理 定义依赖 下面我们在`build.gradle`中添加如下一段。`apply`属于插件的部分,我们到后面再说。现在先来看一下Gradle中的依赖管理,有两个部分,`rep 港控/mmm°/ 2022年07月13日 09:49/ 0 赞/ 144 阅读
相关 Maven依赖管理 定义maven坐标 每个maven工程都需要定义本工程的坐标,坐标是maven对jar包的身份定义。 <!--项目名称,定义为组织名+项目名,类似包名--> 骑猪看日落/ 2022年06月09日 08:58/ 0 赞/ 258 阅读
相关 Gradle Maven 依赖管理 仓库管理简介 本质上说,仓库是一种存放依赖的容器,每一个项目都具备一个或多个仓库。 Gradle支持以下仓库格式: Ivy仓库 [Maven仓库][Mav 谁借莪1个温暖的怀抱¢/ 2022年03月27日 05:08/ 0 赞/ 300 阅读
相关 【Maven】——依赖管理 一般在Maven项目中会引用很多依赖jar包,本文主要讲解Maven中关于依赖的内容。如有理解偏颇之处,欢迎各位大神指正。 依赖范围 compi 谁借莪1个温暖的怀抱¢/ 2022年03月15日 16:37/ 0 赞/ 301 阅读
相关 maven依赖管理 1、依赖的引入 使用 dependency 标签指定被依赖 jar 包的坐标: <dependency> <groupId>com.atguigu 逃离我推掉我的手/ 2022年02月27日 03:50/ 0 赞/ 291 阅读
相关 Gradle的依赖管理 一 什么是依赖管理 几乎所有的基于JVM的软件项目都需要依赖外部类库来重用现有的功能。自动化的依赖管理可以明确依赖的版本,可以解决因传递性依赖代理的版本冲突。 二 工件坐标 川长思鸟来/ 2021年07月25日 00:40/ 0 赞/ 423 阅读
相关 Maven 依赖管理 Maven 依赖管理 Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针... 灰太狼/ 2020年05月24日 14:45/ 0 赞/ 2004 阅读
还没有评论,来说两句吧...