Gradle学习(三) 依赖管理基础

什么是依赖管理?

初略的说,依赖管理由两部分组成。

首先,Gradle需要知道并且寻找到一些你的的项目在构建或运行的时候所需要的文件 ,Gradle管这些需要进入(incoming)到你项目中的文件叫做依赖(dependencies).

其次,Gradle需要构建并且上传你的项目的一些生成物,Gradle管这些需要发出的(outgoing)的文件叫做出版(publictions).

Dependency :

几乎所有工程都不可能完全的不依赖外部文件,一般都需要一些其他工程构建的文件来帮助完成一些必须的功能,这些外部文件构成了工程的依赖。你可以告诉Gradle你需要什么依赖文件,Gradle则可以帮你找到

这些依赖文件并且很好的组织管理它们,这些依赖文件可以在Ivy或者Maven的远程仓库中下载,也可以在你的本地目录下被加载,或者你可以多工程项目(muti-project)中进行工程间的相互依赖。Gradla把这样一个

处理依赖的过程叫做依赖解析(Dependency Resolution)。

    常常会有一些依赖的文件它们同时还会依赖其他文件的情况,比如说Hibernate
core需要一些其他的一些库(libraries)来支持他的允许。在这种情况下Gradle会去寻找这些依赖来保证程序可以正常运行,这种情况

被称为传递依赖(transitive dependencies)

Publiction:

有些工程构建的主要目的是作为一个服务其他工程使用,在这种情况你需要为你的工程打Jar包,获取还需要打源码包和生成文档并且将这些文档发布到一些地方上去,这些输出文件就构成了一个工程的出版物,

Gradle可以很好的帮你的工程完成这项任务,你首先声明你的工程需要发布出版的文件,Gradle会帮你构建这项出版文件并且根据你的需要发布到你需要发布到的地方,你可以需要拷贝一个文件到本地仓库,或者上传

文件到Ivy或者Maven的中央仓库等等,我们把这个出来过程叫做出版(publication)

声明一个依赖:

?





1

2

3

4

5

6

7

8

9

apply plugin: java

repositories {

   mavenCentral()

}

dependencies {

   compile group: ‘org.hibernate‘,name:‘hibernate-core‘,version:‘3.6.7.Final‘

   testCompile group:‘junit‘,name: ‘junit‘,version:‘4.+‘

}

上述配置首先声明了Hibernate core 3.6.7是项目在编译期所需要的资源,同时也暗示了 hibernate
core在运行期(runtime)也是必需的,

?





1

testCompile group:‘junit‘,name: ‘junit‘,version:‘4.+‘

说明了在测试编译期需要任意一个junit版本在4以上的依赖。

依赖配置(Dependency configuration)

依赖控制范围:

compile(编译期):

compile级别的依赖是在整个工程在编译时期所必须的

runtime(运行期)

runtime级别是在工程代码运行的时候所必须的,默认包含在编译期依赖

testCompile(测试编译期)

testCompile级别是在工程代码在测试编译期所必须的,默认包含在运行期以及编译期

testCompile(测试运行期)

testCompile是在工程测试代码运行时期所必须的,默认包含在运行期以及编译期以及测试编译期

外部依赖(External Dependency)

外部依赖就是需要一些非本工程的依赖文件,比如在Maven仓库或者本地文件系统中的依赖。

声明一个外部依赖的方式如下

?





1

2

3

dependencies {

   compile group: ‘org.hibernate‘,name:‘hibernate-core‘,version:‘3.6.7.Final‘

}

  

一个外部依赖用group,name,version三个属性来标识,maven同样是采用三个属性来唯一确认一个依赖(groupId,
artifactId,version)

在Gradle中根据你依赖的仓库不同,group与version属性可选。(在maven中groupId,
artifactId,version三个属性都是必填的)

定义仓库

?





1

2

3

repositories {

   mavenCentral()

}

或直接指定Url

?





1

2

3

4

5

repositories {

maven {

    url "http://repo.mycompany.com/maven2"

    }

}

或使用Ivy(一个敏捷的依赖管理工具 http://ant.apache.org/ivy/)

?





1

2

3

4

5

repositories {

ivy {

    url "http://repo.mycompany.com/repo"

    }

}

本地Ivy

?





1

2

3

4

5

6

repositories {

ivy {

// URL can refer to a local directory

url "../local-repo"

}

}

一个工程可以有多个仓库,Gradle会根据配置的仓库一个一个的寻找相关的依赖直到找到位置。

发布组件

依赖管理同样可以用来处理发布文件

插件可以帮我们很好的定义项目的组件,通常你不需要去告诉Gradle什么东西需要被发布,你只要告诉Gradle要发布到什么地方即可。

?





1

2

3

4

5

6

7

8

9

10

11

uploadArchives {

repositories {

ivy {

credentials {

username "username"

password "pw"

}

url "http://repo.mycompany.com"

        }

    }

}

运行gradle
uploadArchives 
,Gradle就会帮你上传Jar文件到指定的地方去,同时gradle还会帮你生生成好相应的ivy.xml文件

你同样可以吧对应的jar发布到maven仓库中,不过你需要使用maven的插件来完成这项任务,同样的gradle会帮你生成好相应的pom.xml文件

?





1

2

3

4

5

6

7

8

9

10

apply plugin: ‘maven‘

uploadArchives {

repositories {

mavenDeployer {

repository(url:

)

"file://localhost/tmp/myRepo/"

}

    }

}

  

时间: 2024-11-08 03:00:30

Gradle学习(三) 依赖管理基础的相关文章

【git学习三】git基础之git管理远程仓库

1.背景 git管理远程仓库,本文以github为例. 2.管理远程仓库 1.本地ssh认证,在github建立一个repo叫做ospaf-GetWordFre 2.添加远程仓库,可以用git remote 命令实现,o是仓库名,可以用git remote -v查看 git remote add o git://github.com/jimenbian/ospaf-GetWordFre.git 3.接着就可以向github上fetch或是push代码了.注意要选择分支 /************

JBPM学习(三):管理流程定义

概念: ProcessDefinition,流程定义:一个流程的步骤说明,如一个请假流程.报销流程.是一个规则. ProcessDefinition,流程定义对象,是解析.jpdl.xml文件得到流程步骤的信息.没有更新操作,启动流程实例时是使用指定key的最新的版本. 1.部署流程定义 a)一次添加一个资源,相关文件在Classpath中 // 1,部署流程定义(添加) // jbpm4_deployment // jbpm4_deployprop // jbpm4_lob @Test pub

Gradle笔记——依赖管理基础

1. 什么是依赖管理 依赖管理可以分为两部分:一是依赖,即项目构建或运行时所需要的一些文件:二是发布,即构建完成后上传到某个地方. 1.1 依赖 大部分的项目都需要第三方库类或项目文件,这些文件就是项目的依赖了.比如JDBC的jar包,junit的jar包等等.Gradle需要你告诉它工程的依赖是什么,在哪里可以找到,然后它帮你加入构建.在依赖中,可能需要去远程仓库下载文件,如maven或Ivy,本地仓库,甚至是另一个项目,这个过程我们称之为依赖解决. 另外,我们所依赖的文件自身可能也有依赖,当

Gradle 教程说明 用户指南 第8章依赖管理基础

8.1 什么是依赖管理? 依赖管理非常粗略地分为两部份: · build 依赖自什么东西 · build 发布什么东西 8.2 声明你的依赖 让我们来看看一些依赖声明.这是一个基本构建脚本: 例,声明依赖 build.gradle: apply plugin: 'java' repositories { mavenCentral() } dependencies { compile group: 'org.hibernate', name: 'hibernate-core', version:

Php学习之依赖管理工具composer详解

本文和大家分享的主要是php中依赖管理工具composer相关用法,一起来看看吧,希望对大家学习php有所帮助. 什么是依赖管理工具 当你引用某个第三方库时,如果这个库使用到了另外一个或若干个第三方库,再或许另外一个第三方库又有其他的依赖,这样的话手动维护你需要下载安装N个包.用来解决由此产生的问题的工具就叫做依赖管理工具. 有哪些常见的依赖管理工具 Java的maven.gradle,NodeJs的npm,IOS的CocoaPods,PHP的composer 大部分编程语言都会有自己的常用依赖

Scala系统学习(三):Scala基础语法

如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进行通信的对象的集合.现在我们简单地看一下类,对象,方法和实例变量的含义. 对象 - 对象有状态和行为.一个对象是类的一个实例.例如 - 狗有状态:颜色,名称,品种,它行为有:摇摆,吠叫和吃东西. 类 - 可以将类定义为描述与该类相关的行为/状态的模板/蓝图. 方法 - 一个方法基本上是一种行为.一个

OpenGL学习(三)三维编程基础

正交投影 viod  glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble                           near,GLdouble far) //设定一个正交投影矩阵,并定义了一个形状为直平行六面体的视域体. void glutWireCube(GLdouble size)         //生成一个线框立方体,中心位于原点,边长为size void glutSolidCub

【转载】Gradle学习 第六章:构建脚本基础

转载地址:http://ask.android-studio.org/?/article/11 6.1. Projects and tasks 项目和任务Everything in Gradle sits on top of two basic concepts: projects and tasks.<翻译> Gradle中的所有东西都是围绕两个基本概念:项目和任务. Every Gradle build is made up of one or more projects. What a

【转载】Gradle学习 第三章:教程

转载地址:http://ask.android-studio.org/?/article/15 3.1. Getting Started 入门The following tutorials introduce some of the basics of Gradle, to help you get started.<翻译> 接下来的教程介绍了一些帮助你入门的一些Gradle基础知识. Chapter 4, Installing Gradle 第四章,安装GradleDescribes how