`

ivy教程(3)-调整默认设置

阅读更多


    ivy绑定一些默认设置,这使得在通常环境下使用ivy很容易。这个教程,接近于参考文档,解释这些默认设置是什么和他们怎样调整来满足你的需要。

    为了完整的理解设置的概念和你可以用它们做什么,我们建议阅读其他和设置相关的教程(如Multiple ResolversDual Resolver )或者设置文件 的参考文档。

1) 概念

    默认设置主要是3种仓库组成:

    * local / 私有
      用户私有的仓库

    * shared / 共享
      在团队的所有成员之间共享的仓库。

    * public / 公共
      可以找到大部分模块,尤其是第三方模块的公共仓库.

    注意如果你独自工作,local和shared仓库之间的差异不重要,但是需要知道如何识别它们。

    现在让我们更详细的描述这些仓库概念的每一个。后面我们会描述如何实际配置它们。

    1. local / 私有

    当你想做一些事情而不希望被环境中发生的其他任何事情打扰时,私有仓库非常有用。这意味着每当ivy能够在这个仓库中找到模块时,这个模块将被使用,不管其他仓库里的是什么。

    举例,如果你有一个模块,声明依赖于模块foo的latest.integration修订版本,然后当foo的一个修订版本在私有仓库中被发现,这个版本将被使用,即使在其他仓库中有一个更新的修订版本可用。

    这可能让你们中的某些人困惑,但是想象你不得不在一个项目中实现一个新的特性,并且为了达到这个目标你需要修改两个模块:你在模块foo内增加一个新的方法,并在模块bar中利用。然后如果你公布模块foo到你的私有仓库,你可以保证在你的bar模块中得到它,即使有其他人在shared仓库中公布了foo的一个新的修订版本。

    但是小心,当你完成你的开发并且公布它到共享仓库时,你将不得不清理你的本地仓库以便从在共享仓库中公布的新版本中获益。

    同样注意,在本地仓库中找到的模块必须是完整的,换句话说,他们必须同时提供模块描述符和发行的制品。

    2. shared / 共享

    如它的名字建议的,共享仓库的目标是在整个开发团队中共享。例如你可以公布你的团队的私有模块,同样你可以放置一些在公共仓库中不能得到的模块(例如sun的jar文件),或者仅仅是不精确(例如坏的或者不完整的模块描述符).

    注意模块可以在共享仓库和公共仓库中分隔:例如你可以在共享仓库中有模块的描述符而制品在公共仓库中。

    3. public / 公共

    大多数模块可以在公共仓库中找到,但是某些时候缺少你要的信息。这通常是一个只能通过internet连接访问的仓库,虽然这不是强制。

2) 安装仓库

    现在我们已经看到三个仓库中的每一个的目标,让我们看怎样安装他们并配置以便满足你的需求。

    首先,几个仓库在你的文件系统中使用同一个root。被作为${ivy.default.ivy.user.dir}引用,默认为在你的user home下的.ivy2 目录。

    注意几个东西可以通过设置ivy变量来完成。为了不定义你自己的ivysettings.xml文件而设置他们,你可以:

    * 在任何ivy调用前,在你的构建文件中设置一个ant属性,如果你通过ant使用ivy
    * 设置一个环境变量,如果你通过命令行使用ivy

    举例:

< target  name ="resolve" >
  
< property  name ="ivy.default.ivy.user.dir"  value ="/path/to/ivy/user/dir" />
  
< ivy:resolve  />
</ target >


   现在我们将展示如何为不同类型的仓库覆盖默认值,注意你可以在下面的默认设置的细节中发现这些默认值是什么。

    1. Local

        默认,本地仓库位于${ivy.default.ivy.user.dir}/local.这通常是一个不错的地方,但是如论如何你可能需要修改它。没有问题,你只需要设置下面的ivy变量到你想使用的目录:

ivy.local.default.root

    例如:

ivy.local.default.root=/opt/ivy/repository/local


    如果你已经有了一些你想作为你的本地仓库来使用的东西,你可能同样想修改这个仓库的布局。再一次,有两个变量可用于此:

ivy.local.default.ivy.pattern

给出查找ivy文件的样式

ivy.local.default.artifact.pattern

给出查找制品的样式

例如:

ivy.local.default.root=/opt/ivy/repository/local
ivy.local.default.ivy.pattern=[module]/[revision]/ivy.xml
ivy.local.default.artifact.pattern=[module]/[revision]/[artifact].[ext]


    2. Shared

    默认,本地仓库位于${ivy.default.ivy.user.dir}/shared.如果你独自工作没有问题,但是共享仓库是用来共享的!因此经常需要修改这个目录,并且它通常修改为指向一个网络共享目录。你可以使用:

ivy.shared.default.root

变量来制定一个新的目录。此外,你也可以通过和本地仓库类似的变量来配置布局。

ivy.shared.default.ivy.pattern

给出查找ivy文件的样式

ivy.shared.default.artifact.pattern

给出查找制品的样式

例如:

ivy.shared.default.root=/opt/ivy/repository/shared
ivy.shared.default.ivy.pattern=[organisation]/[module]/[revision]/ivy.xml
ivy.shared.default.artifact.pattern=[organisation]/[module]/[revision]/[artifact].[ext]


    3. Public
    默认,公共仓库是出于m2 兼容模式下的ibiblio(换句话说,maven2的公共仓库).

    这个仓库的优势在于提供了很多模块并且大部分的模块都有metadata。matadata的质量不是都很完美,但是它是一个好的开始:使用类似ivy这样的工具并从间接依赖管理的能力中获益。

    尽管ivy容易使用,我们建议阅读最佳实践来理解使用公共的、无法管理的仓库的正面和负面。

    在1.4版本中ivy使用ivyrep作为默认的解析器,如果你想恢复成这个方式,可以设置ivy.14.compatible=true 作为一个ant属性。

3) 走的更远

    好,我们已经看到修改这三个主要仓库的设置是很容易的。但是在web服务器上我的共享仓库是什么?如果你不想使用maven2 仓库作为公共的仓库。或者其他...

    没有问题,ivy富有弹性并且可以用非常特殊的设置进行配置以满足你的需要和环境。但是在考虑你自己的设置前,我们建议阅读后面的内容,你将要学习如何修改默认设置的一部分并调整其他。

    但是在解析如何做之前,你需要对ivy默认是如何配置的有一个简短的概述。

    默认,ivy使用被打包在ivy的jar包中的ivysettings.xml来配置。这里是设置文件:

< ivysettings >
  
< settings  defaultResolver ="default" />
  
< include  url ="${ivy.default.settings.dir}/ivysettings-public.xml" />
  
< include  url ="${ivy.default.settings.dir}/ivysettings-shared.xml" />
  
< include  url ="${ivy.default.settings.dir}/ivysettings-local.xml" />
  
< include  url ="${ivy.default.settings.dir}/ivysettings-main-chain.xml" />
  
< include  url ="${ivy.default.settings.dir}/ivysettings-default-chain.xml" />
</ ivysettings >


    好,这里没有太多的信息,除了一些包含。这些包含的目的是你能够容易的仅仅修改ivysettings的一部分而直接使用其他。例如,如果你想定义你自己的公共解析器,你将只需要像这样通过ivysettings来配置ivy:

< ivysettings >
  
< settings  defaultResolver ="default" />
  
< include  url ="http://myserver/ivy/myivysettings-public.xml" />
  
< include  url ="${ivy.default.settings.dir}/ivysettings-shared.xml" />
  
< include  url ="${ivy.default.settings.dir}/ivysettings-local.xml" />
  
< include  url ="${ivy.default.settings.dir}/ivysettings-main-chain.xml" />
  
< include  url ="${ivy.default.settings.dir}/ivysettings-default-chain.xml" />
</ ivysettings >


    注意仅仅是ivysettings-public包含被修改为包含自产的公共解析器。注意同样可以像这样使用,感谢${ivy.default.settings.dir} 是一个变量的事实,这个变量经常设置为ivy默认设置文件所在的地方(换句话说,被打包在jar中)。为了完成这个例子,你必须写你自己的ivysettings文件(那样你在这里例子中你将使得http://myserver/ivy/myivysettings-public.xml可用)来定义你自己的公共解析器。例如:

< ivysettings >
  
< resolvers >
    
< filesystem  name ="public" >
      
< ivy  pattern ="/path/to/my/public/rep/[organisation]/[module]/ivy-[revision].xml"   />
      
< artifact  pattern ="/path/to/my/public/rep/[organisation]/[module]/[artifact]-[revision].[ext]"   />
    
</ filesystem >
  
</ resolvers >
</ ivysettings >


现在为了正确地从默认设置中获益,你需要做的最后一件事情是每个包含的ivysettings文件的内容:

ivysettings-public.xml

< ivysettings >
  
< resolvers >
    
< ibiblio  name ="public"  m2compatible ="true" />
  
</ resolvers >
</ ivysettings >


ivysettings-shared.xml

< ivysettings >
  
< property  name ="ivy.shared.default.root"              value ="${ivy.default.ivy.user.dir}/shared"  override ="false" />
  
< property  name ="ivy.shared.default.ivy.pattern"       value ="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override ="false" />
  
< property  name ="ivy.shared.default.artifact.pattern"  value ="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override ="false" />
  
< resolvers >
    
< filesystem  name ="shared" >
      
< ivy  pattern ="${ivy.shared.default.root}/${ivy.shared.default.ivy.pattern}"   />
      
< artifact  pattern ="${ivy.shared.default.root}/${ivy.shared.default.artifact.pattern}"   />
    
</ filesystem >
  
</ resolvers >
</ ivysettings >


ivysettings-local.xml

< ivysettings >
  
< property  name ="ivy.local.default.root"              value ="${ivy.default.ivy.user.dir}/local"  override ="false" />
  
< property  name ="ivy.local.default.ivy.pattern"       value ="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override ="false" />
  
< property  name ="ivy.local.default.artifact.pattern"  value ="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override ="false" />
  
< resolvers >
    
< filesystem  name ="local" >
      
< ivy  pattern ="${ivy.local.default.root}/${ivy.local.default.ivy.pattern}"   />
      
< artifact  pattern ="${ivy.local.default.root}/${ivy.local.default.artifact.pattern}"   />
    
</ filesystem >
  
</ resolvers >
</ ivysettings >


ivysettings-main-chain.xml

< ivysettings >
  
< resolvers >
    
< chain  name ="main"  dual ="true" >
      
< resolver  ref ="shared" />
      
< resolver  ref ="public" />
    
</ chain >
  
</ resolvers >
</ ivysettings >


ivysettings-default-chain.xml

< ivysettings >
  
< resolvers >
    
< chain  name ="default"  returnFirst ="true" >
      
< resolver  ref ="local" />
      
< resolver  ref ="main" />
    
</ chain >
  
</ resolvers >
</ ivysettings >


    在这里,你有足够的提示来配置你想要的方式...查阅设置文档 来看你想要做的是不是可能,并继续前行!

0
0
分享到:
评论

相关推荐

    apache-ivy-2.5.0-all软件包下载(含bin部署包、src源码和deps依赖包).txt

    该软件包中包含apache-ivy-2.5.0-rc1-bin.tar.gz部署安装包、apache-ivy-2.5.0-rc1-bin-with-deps.zip依赖包、apache-ivy-2.5.0-rc1-src.zip源码。

    ivy-2.4.0-API文档-中文版.zip

    赠送jar包:ivy-2.4.0.jar; 赠送原API文档:ivy-2.4.0-javadoc.jar; 赠送源代码:ivy-2.4.0-sources.jar; 赠送Maven依赖信息文件:ivy-2.4.0.pom; 包含翻译后的API文档:ivy-2.4.0-javadoc-API文档-中文(简体)版...

    apache-ivy-2.3.0-bin.tar.gz

    3. 更新PATH:`echo 'export PATH=$PATH:/usr/local/apache-ivy-2.3.0/bin' &gt;&gt; ~/.bashrc && source ~/.bashrc` 安装Ant是使用Ivy的前提,因为Ivy通常作为Ant的任务来运行。Ant是一个流行的Java项目构建工具,它...

    ivy-2.4.0-API文档-中英对照版.zip

    赠送jar包:ivy-2.4.0.jar; 赠送原API文档:ivy-2.4.0-javadoc.jar; 赠送源代码:ivy-2.4.0-sources.jar; 赠送Maven依赖信息文件:ivy-2.4.0.pom; 包含翻译后的API文档:ivy-2.4.0-javadoc-API文档-中文(简体)-...

    apache-ivy-2.3.0-bin.zip

    在描述中提到的"apache-ivy-2.3.0-bin.zip"是一个包含Apache Ivy 2.3.0发行版的压缩包,通常它会包含Ivy的二进制文件、文档、示例和配置文件等。这个版本的Ivy可以用于安装和配置,以帮助管理你的Java项目中的依赖。...

    PyPI 官网下载 | ivy-demo-utils-1.1.2.tar.gz

    《PyPI官网下载 Ivy-Demo-Utils:一个Python库的深度探索》 PyPI(Python Package Index)是Python开发者广泛使用的软件包仓库,它为全球的Python社区提供了一个集中的平台,用于分享、发布和下载Python库。在这个...

    apache-ivy-2.4.0-rc1-bin.zip_ivy

    这个"apache-ivy-2.4.0-rc1-bin.zip_ivy"文件是Apache Ivy的2.4.0-rc1版本的二进制发行版,包含了运行Ivy所需的所有文件。Ivy在项目构建过程中扮演了类似于Maven的角色,但它的集成更加灵活,可以与Ant等构建工具...

    rh-maven33-apache-ivy-2.3.0-4.17.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    apache-ivy-2.0.0-beta1-src.zip

    在 "apache-ivy-2.0.0-beta1-src.zip" 这个压缩包中,我们可以期待找到以下关键组件和文件: 1. **源代码目录**:Ivy 的所有源代码,通常按照模块或功能组织,这有助于理解其内部工作原理。开发者可以深入查看 `src...

    apache-ivy-2-5-0.rar

    在"apache-ivy-2-5-0.rar"这个压缩包中,包含了Apache Ivy 2.5.0版本的所有组件和文档。 Ivy的核心概念是依赖解析,它允许开发者声明项目所依赖的库,并自动下载这些库及其依赖,避免了手动管理JAR文件的繁琐工作。...

    Python库 | ivy-demo-utils-1.1.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:ivy-demo-utils-1.1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    apache-ivy-2.3.0-rc2-bin.zip

    在"apache-ivy-2.3.0-rc2-bin.zip"这个压缩包中,你可以期待找到以下内容: 1. **ivy.jar**:这是Apache Ivy的主要运行时库,包含了处理依赖管理的所有核心功能。 2. **lib**目录:这个目录可能包含Ivy运行所需要的...

    Python库 | ms_ivy-1.8.4-py2-none-manylinux1_x86_64.whl

    **Python库ms_ivy-1.8.4-py2-none-manylinux1_x86_64.whl详解** 在Python编程中,库扮演着至关重要的角色,它们提供了丰富的功能和模块,帮助开发者高效地完成各种任务。`ms_ivy`是一个这样的库,它的版本为1.8.4,...

    apache-ivy

    压缩包子文件的文件名"apache-ivy-2.2.0"很可能包含了Ivy的完整发布内容,如`ivy.jar`(Ivy的主要可执行文件)、文档、示例和可能的配置文件等。这些内容可以帮助用户快速理解和使用Apache Ivy。 Apache Ivy的核心...

    rh-java-common-ivy-local-support-4.3.2-1.14.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    apache-ivy-2.3.0.rar

    在 "apache-ivy-2.3.0.rar" 压缩包中,我们可能找到了Ivy 2.3.0版本的完整发布内容。这个版本包含了Ivy的核心库、文档、示例以及其他相关资源。以下是一些关于Apache Ivy的重要知识点: 1. **依赖管理**:Ivy允许...

    PyPI 官网下载 | ms_ivy-1.8.4-py2-none-manylinux1_x86_64.whl

    资源来自pypi官网。 资源全名:ms_ivy-1.8.4-py2-none-manylinux1_x86_64.whl

    Python库 | ivy-phylo-20120228.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:ivy-phylo-20120228.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python库 | ms_ivy-1.8.17-py2-none-manylinux1_x86_64.whl

    资源分类:Python库 所属语言:Python 资源全名:ms_ivy-1.8.17-py2-none-manylinux1_x86_64.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

Global site tag (gtag.js) - Google Analytics