让开发自动化: 利用 Ivy 管理依赖项_caolaosanahnu的博客-CSDN博客_生成 ivy-report


本站和网页 https://blog.csdn.net/caolaosanahnu/article/details/7945852 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

让开发自动化: 利用 Ivy 管理依赖项_caolaosanahnu的博客-CSDN博客_生成 ivy-report
让开发自动化: 利用 Ivy 管理依赖项
caolaosanahnu
于 2012-09-05 12:31:24 发布
1070
收藏
分类专栏:
ant
文章标签:
dependencies
jar
ant
maven
存储
任务
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/caolaosanahnu/article/details/7945852
版权
ant
专栏收录该内容
14 篇文章
0 订阅
订阅专栏
http://www.ibm.com/developerworks/cn/java/j-ap05068/index.html
实际上,所有软件开发项目都必须依靠来自其他项目的源代码。例如,许多项目可能依靠 log4j 等日志记录工具和 Struts 之类的 Web 框架。您的开发团队不会维护其他项目的源代码,但要依靠其 API 来实现项目中的定制软件。您的软件所依靠的其他项目数量越多(包括这些项目自身的依赖项),构建软件就变得越复杂。
关于本系列
作为开发人员,我们致力于为用户自动化流程;但许多开发人员疏忽了自动化我们自己的开发流程的机会。为此,我们编写了 让开发自动化 系列文章,专门探讨软件开发流程自动化的实践应用,为您介绍 何时以及 如何成功应用自动化。
我已经看到许多团队使用各种不完善的技术,尝试解决这种难题:
将全部有依赖关系的项目(JAR 文件)放在一个目录中,此目录将签入项目的版本控制存储库。这种技术不必要地增加了存储库的大小,使得管理版本差异极为困难。 将有依赖关系的 JAR 分配到一个公共文件服务器上,使团队无法控制版本更改。 手动将 JAR 文件复制到各开发人员工作站上的指定位置。这种方法使得确定丢失的文件或修正版本极为困难。 执行一条 HTTP Get命令,将文件下载到开发人员的工作站,手动执行或将其作为自动构建的一部分。这种技术会造成未受管理的 JAR 文件。
我参加过一个中型项目,包含 1,000 个 Java 类和 100 多个有依赖关系的 JAR 文件。(我们选择了第一种不完美的技术:将所有 JAR 签入项目的版本控制存储库。)图 1 显示了可能在此类项目中看到的一小部分依赖项的类型:
图 1. Web 开发项目中的 JAR 依赖项示例
Transfixed on transitive dependencies
传递依赖(Transitive dependency)是一个复杂的术语,但表示的是 Ivy 提供的一种简单而强大的特性。某些 JAR 文件依赖于其他 JAR,这样才能正常工作。使用 Ivy,您只需一次性声明一个组件的依赖项。此后,仅需了解一个项目的主要 JAR 文件,而无需了解它的所有 JAR 文件依赖项。如果您体验过手动查找依赖项的痛苦——无论是通过文档还是通过研究代码,您就会发现,此特性本身就值得您付出时间在项目中配置 Ivy。参见本文 依赖于依赖项一节了解更多细节。
图 1 表现出,Brewery 项目的源代码依赖于 Hibernate、Struts 2、MySQL Connector 和 Cobertura。而 Cobertura 又依赖其他 JAR,如 asm-2.2.1.jar、jakarta-oro-2.0.8.jar 和 log4j-1.2.9.jar。此外,asm-2.2.1.jar 依赖 asm-tree-2.2.1.jar。这仅仅是可能出现的各类嵌套依赖项的一个简单示例。即便是某个 JAR 的版本不正确,您也会体验到难以排除的问题,例如编译错误或意料之外的行为。
Apache Maven 构建管理和项目管理工具已经吸引了 Java 开发人员的注意。Maven 引入了 JAR 文件公共存储库的概念,可通过公开的 Web 服务器访问(称为 ibiblio)。Maven 的方法减少了 JAR 文件膨胀的情况,不会占用大多数版本控制存储库。但使用 Maven 时,它会鼓励您采用其 “惯例优于配置” 的方法来构建软件,这会制约您定制构建脚本的灵活性。
如果您多年来一直使用 Apache Ant,现在希望获得使用公共存储库的优势,又该如呢?您是否不得不接受 Maven 的构建方法来获得这些收益?幸运的是,答案是否定的,这是由于一种称为 Apache Ivy 的工具 —Ant 的一个子项目。Ivy 提供了最一致、可重复、易于维护的方法,来管理项目的所有构建依赖项(在 参考资料部分中可以找到 Maven 和 Ivy 的比较)。这篇文章介绍了安装和配置 Ivy 来管理依赖项的基础知识,指出了可参考的更多信息。
入门
开始使用 Ivy 非常简单,只需创建两个 Ivy 特有的文件,添加一些 Ant 目标即可。Ivy 特有的文件是 ivy.xml 和一个 Ivy 设置文件。ivy.xml 文件中列举了项目的所有依赖项。ivysettings.xml 文件(可以随意为此文件命名)用于配置从中下载有依赖关系的 JAR 文件的存储库。
清单 1 展示了一个简单的 Ant 脚本,它调用了两个 Ivy 任务:ivy:settings和 ivy:retrieve。
清单 1. 使用 Ivy 的简单 Ant 脚本
<target name="init-ivy" depends="download-ivy">
<ivy:settingsfile="${basedir}/ivysettings.xml" />
<ivy:retrieve/>
</target>
在 清单 1中,ivy:settings定义了 Ivy 设置文件。对 ivy:retrieve的调用从 ivy.xml 声明的一个存储库中检索 JAR 文件。
安装 Ivy
下载并使用 Ivy 的方法有几种。第一种是手动将 Ivy JAR 文件下载到 Ant lib 目录中,也可下载到 Ant 脚本的类路径中定义的某个目录中。我迷上了自动化,所以更倾向于使用自动化替代方案:下载 Ivy 的 JAR 文件,在 Ant 目标中配置类路径。清单 2 展示了这种技术的示例:
清单 2. 使用 Ant 自动安装 Ivy
<?xml version="1.0" encoding="iso-8859-1"?>
<project name="test-ivy" default="init-ivy" basedir="."
xmlns:ivy="antlib:org.apache.ivy.ant" xmlns="antlib:org.apache.tools.ant">
<property name="ivy.install.version" value="2.0.0-beta2" />
<property name="ivy.home" value="${user.home}/.ant"/>
<property name="ivy.jar.dir" value="${ivy.home}/lib" />
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />
<taskdefresource="org/apache/ivy/ant/antlib.xml"
uri="antlib:org.apache.ivy.ant" classpath="${ivy.jar.dir}/ivy.jar"/>
<target name="download-ivy">
<mkdir dir="${ivy.jar.dir}"/>
<get src="http://www.integratebutton.com/repo/
${ivy.install.version}/ivy-2.0.0-beta2.jar"
dest="${ivy.jar.file}"usetimestamp="true"/>
</target>
</project>
清单 2中的第二行定义了 XML 名称空间。antlib在 ivy.jar 文件中引用 antlib.xml。其余的 xmlns指明了 ivyAnt 任务的完全限定路径。${user.home}/.ant的 ivy.home值是 ivy.jar 文件下载的目标位置。taskdef定义了 ivyAnt 任务,引用其类路径的位置。download-ivy目标下载 ivy-2.0.0-beta2.jar 并使用 dest属性为其重命名。
一旦下载并配置了 Ivy,就可以使用任意 Ivy Ant 任务(如 清单 1中调用的两个任务)。
创建配置脚本
ivy.xml 文件是必不可少的,您在此文件中定义项目的全部有依赖关系的 JAR。清单 3 展示了一个示例:
清单 3. 在 ivy.xml 中定义依赖项
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="./config/ivy/ivy-doc.xsl"?>
<ivy-module version="1.0">
<info organisation="com"module="integratebutton" />
<dependencies>
<dependency name="hsqldb" rev="1.8.0.7" />
<dependency name="pmd" rev="2.0" />
<dependency name="cobertura" rev="1.9"/>
<dependency name="checkstyle" rev="4.1" />
<dependency name="junitperf" rev="1.9.1" />
<dependency name="junit" rev="3.8.1" />
</dependencies>
</ivy-module>
请注意,清单 3未表示任何文件位置或 URL,允许您转到其他目录位置,而无需更改依赖项列表。info元素中的 organisation属性标识了组织类型(如 .net、.org 或 .com)。后接 module名称。此模块的依赖项列表遵循一种命名规范,在下一个清单中您将更清晰地看出此规范。目前,只需记住 dependency name="cobertura" rev="1.9"将转换为 cobertura-1.9.jar 即可。
清单 4 是 Ivy 设置文件的示例。它定义了 清单 3中 ivy.xml 文件所用的存储库位置和相关模式。
清单 4. Ivy 设置文件
<ivysettings>
<settings defaultResolver="chained"/>
<resolvers>
<chain name="chained" returnFirst="true">
<filesystem name="libraries">
<artifact pattern="${ivy.conf.dir}/repository/[artifact]-[revision].[type]" />
</filesystem>
<url name="integratebutton">
<artifact pattern="http://www.integratebutton.com/repo/[organisation]/[module]/
[revision]/[artifact]-[revision].[ext]" />
</url>
<ibiblio name="ibiblio" />
<url name="ibiblio-mirror">
<artifact pattern="http://mirrors.ibiblio.org/pub/mirrors/maven2/[organisation]/
[module]/[branch]/[revision]/[branch]-[revision].[ext]" />
</url>
</chain>
</resolvers>
</ivysettings>
清单 4中的 filesystem元素定义了本地工作站上的位置模式。两个 url元素定义了可用于下载 JAR 文件的多个位置:第一个元素定义了受我控制的 integratebutton.com 上的一个自定义存储库;第二个元素定义了包含大量开源 JAR 文件的外部 Maven 存储库(不受我控制)。如果 Ivy 无法从第一个存储库下载 —比如此存储库宕机,或者文件未在指定位置 —它将尝试第二个位置。优点在于,一旦 Ivy 下载了一个 JAR,它就会将文件置入您的本地文件系统,不必再为每一次构建重新下载这些文件。
回页首
依赖于依赖项
一个模块常常要依赖其他模块。例如,在 图 1中可以看到,cobertura-1.9.jar 文件的多个依赖项中包括 asm-2.2.1.jar,而 asm-2.2.1.jar 又依赖于 asm-tree-2.2.1.jar。如果没有像 Ivy 这样的工具,您就需要确保类路径中存在这些 JAR 的正确版本,保证 JAR 版本之间不存在冲突。而使用 Ivy,您只需定义 cobertura模块及其所有依赖模块,如清单 5 中所示的 ivy.xml 文件那样。切记,这个 ivy.xml 文件与 cobertura-1.9.jar 文件位于同一目录。
清单 5. 在 ivy.xml 文件中定义依赖项
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="cobertura" module="cobertura"revision="1.9"/>
<configurations>
<conf name="master"/>
</configurations>
<publications>
<artifact name="cobertura" type="jar" conf="master" />
</publications>
<dependencies>
<dependency org="objectweb" name="asm" rev="2.2.1" conf="master"/>
<dependency org="jakarta" name="oro" rev="2.0.8" conf="master"/>
<dependency org="apache" name="log4j" rev="1.2.9" conf="master"/>
</dependencies>
</ivy-module>
清单 5中特别强调的依赖项定义了 objectweb org和名称 asm以及要使用的特定修订版。Ivy 将此信息与 ivysettings.xml 文件中的存储库定义(如 清单 4所示)一起使用,用于下载 JAR 文件的依赖项。
图 2 展示了符合 清单 4所示 ivysettings.xml 文件配置的存储库中的目录结构:
图 2. asm模块的目录结构
请注意,图 2 展示了一个 ivy.xml 文件(见清单 6),它定义了 asm的依赖项。 在清单 6 中,针对 asm模块的 ivy.xml 文件片段表示了它惟一的依赖项 —asm-tree-2.2.1.jar:
清单 6. 为 asm定义依赖项的 ivy.xml
...
<dependencies>
<dependency org="objectweb" name="asm-tree"rev="2.2.1" conf="master"/>
</dependencies>
...
简单说明一下,cobertura模块定义了三个依赖模块:asm、jakarta-oro和 log4j,如 清单 5所示。而 asm模块又有一个依赖模块,名为 asm-tree,如 清单 6所示。
请注意,图 3 中的 asm-tree目录结构与 图 2中的 asm模块结构相似:
图 3. asm-tree模块的目录结构
当然,差别在于 JAR 文件包含不同的类,图 2 所示的 ivy.xml 文件的定义描述了 asm-tree模块。(碰巧,asm-tree模块未在其 ivy.xml 文件中定义任何依赖项。)
回页首
Ivy 进阶
既然您已经掌握了使用 Ivy 的基本知识,下面我将介绍其他一些有用的 Ant 任务。
呈现报告
Ivy 提供了一个任务,用于报告一个项目中的依赖文件。清单 7 展示了如何调用 Ivy 的 reportAnt 任务来创建依赖项列表:
清单 7. 通过 Ant 生成 Ivy 依赖项报告
<target name="ivy-report" depends="init-ivy">
<ivy:report todir="${target.dir}/reports/ivy"/>
</target>
清单 7中的脚本生成了一份 HTML 报告,显示了某项目的依赖文件列表。图 4 展示了该报告:
图 4. 显示项目依赖项的 HTML 报告
其他任务
还有其他许多针对 Ivy 的 Ant 任务可供您使用 —通过为 Maven 生成一个 POM 文件来清理本地文件系统缓存。表 1 显示了部分 Ivy 的 Ant 任务及其用途:
表 1. 其他 Ivy Ant 任务
TaskPurposesettings对于验证包含存储库的主机最有用cachepath覆盖本地文件系统上的默认缓存路径,所下载的文件将存放在此路径中repreport为存储库中的几个模块生成报告install安装一个模块及其所有依赖项makepom通过 ivy.xml 文件创建一个 pom.xml file,供 Maven 使用cleancache清理本地文件系统缓存,强制在下一次构建时从存储库重新检索 JAR 文件
参见 参考资料,了解 Ivy 中可用的其他 Ant 任务。
回页首
一切视情况而定
版本控制二进制库
Ivy 并未消除对 JAR 文件进行版本控制的需要。我常常看到有些团队由于得到了可通过 HTTP 访问的存储库,就彻底忘记了将文件置于版本控制系统之中。如果一年之后您需要重新创建软件,而 HTTP 存储库未得到集中管理,重新创建的过程将十分艰难。使用可通过 HTTP 访问的版本控制存储库(如 Subversion)将避免这样的 窘境,因为您可以集中管理 并提供 HTTP 访问
Ivy 集中管理依赖文件,消除了开发团队将 JAR 文件从一个版本控制存储库复制到另一个存储库中时可能出现的膨胀现象。如果您正参与一个简单的项目,将 JAR 文件签入版本控制系统或使用本文开头列出的其他某些技术可能不会显著降低您的速度。但若您的项目规模越来越大,或者您在使用公共文件的企业环境中工作,一种公共方法就变得十分必要。无论是哪种情况,Ivy 都能使定义项目依赖项更为一致、更为可行。因此值得您付出时间研究 Ivy 在您的项目中的应用。
参考资料
学习
您可以参阅本文在 developerWorks 全球站点上的 英文原文。 Apache Ivy:访问 Ivy 项目网站,查看文档、教程和社区资源。 "Ivy in 4.2 steps" (Andrew Glover,testearly.com,2007 年 6 月):通过几个简单的步骤使 Ivy 开始运行。 Ivy / Maven2 Comparison(Apache Ant Ivy 项目):Ivy 与 Maven 2 依赖项管理之间的差异探讨。 Ant in Action (Steven Loughran 和 Erik Hatcher,Manning,2007 年):这是一本出色的书籍,其中的第 11 章专门探讨使用 Ivy 进行依赖项管理的内容。 让开发自动化 (Paul Duvall,developerWorks):阅读整个系列文章。 浏览 技术书店,查看关于上述和其他技术主题的书籍。 developerWorks Java 技术专区:数以百计的文章,介绍 Java 编程的所有方面。
获得产品和技术
Ant:下载 Ant,开始以可预计、可重复的方式构建软件。 Ivy:下载 Ivy。
讨论
Improve Your Code Quality 论坛:developerWorks 的杰出专栏作者 Andrew Glover 以顾问的身份在此论坛中贡献他丰富的专业技术,主要关注改进代码质量的问题。 Accelerate development space:developerWorks 的杰出专栏作者 Andrew Glover 运作的一站式门户,包含开发人员测试、持续集成、代码度量和重构等内容。 访问 developerWorks blog,加入 developerWorks 社区。
关于作者
Paul Duvall 是 Stelligent Incorporated 的 CTO,该公司是一家咨询公司,在帮助开发团队优化 Agile 软件产品方面被认为是同行中的翘楚。他是 Addison-Wesley Signature 系列书籍 Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley,2007 年)的作者之一。他对 UML 2 Toolkit (Wiley,2003 年)和 No Fluff Just Stuff Anthology (Pragmatic Programmers,2007 年)也有贡献。
http://blog.csdn.net/daquan198163/article/details/4768152
有了Ivy的帮忙,我们不需要为了一个库依赖管理而舍弃Ant去学那个难搞的Maven了。
基本配置步骤如下:
1、copy Ivy插件(
org.apache.ivy_2.1.0.cr1_20090319213629.jar )到ant_home/lib下;
2、在项目根目录下新建
ivysettings.xml ;
3、在项目根目录下新建
ivy.xml ,内容根据项目需要来;
4、修改你原来的build.xml,如下:
[xhtml:nogutter]
view plain
copy
print
增加ivy需要的属性:  <property name="publish.version" value="0.1" />  <property name="ivy.report.todir" value="build" />  <property name="repository.dir" value="d:/Local_Repository" />  初始化ivy:  <ivy:settings file="ivysettings.xml" />  添加resolve target,用于下载依赖包:  <target name="resolve" description="--> resolve and retrieve dependencies with ivy">          <ivy:resolve file="ivy.xml" conf="*" />          <ivy:retrieve pattern="${lib.dir}/[conf]/[artifact]-[revision].[ext]" />  </target>  让原来的compile依赖于resolve:  <target name="compile" depends="resolve"  添加publish target,这个不是必须的:  <target name="publish" depends="jar" description="publish">          <ivy:publish resolver="local" pubrevision="${publish.version}" overwrite="true">              <artifacts pattern="dist/[artifact].[ext]" />          </ivy:publish>          <echo message="project ${ant.project.name} released with version ${publish.version}" />  </target>  添加report target用于生产漂亮的依赖报告,当然这个也不是必须的:  <target name="report" depends="resolve" description="--> resolve and retrieve dependencies with ivy">          <ivy:report />  </target>  
增加ivy需要的属性:
<property name="publish.version" value="0.1" />
<property name="ivy.report.todir" value="build" />
<property name="repository.dir" value="d:/Local_Repository" />
初始化ivy:
<ivy:settings file="ivysettings.xml" />
添加resolve target,用于下载依赖包:
<target name="resolve" description="--> resolve and retrieve dependencies with ivy">
<ivy:resolve file="ivy.xml" conf="*" />
<ivy:retrieve pattern="${lib.dir}/[conf]/[artifact]-[revision].[ext]" />
</target>
让原来的compile依赖于resolve:
<target name="compile" depends="resolve"
添加publish target,这个不是必须的:
<target name="publish" depends="jar" description="publish">
<ivy:publish resolver="local" pubrevision="${publish.version}" overwrite="true">
<artifacts pattern="dist/[artifact].[ext]" />
</ivy:publish>
<echo message="project ${ant.project.name} released with version ${publish.version}" />
</target>
添加report target用于生产漂亮的依赖报告,当然这个也不是必须的:
<target name="report" depends="resolve" description="--> resolve and retrieve dependencies with ivy">
<ivy:report />
</target>
完整的build.xml示例见
http://code.google.com/p/smartpagination/source/browse/trunk/build.xml
Over!
至此,你已经为蚂蚁插上了Ivy的翅膀,下面的工作只是锦上添花而已——在Eclipse配置Ivy,这个工作的作用是把ivy.xml变成classpath的一部分,使得我们只需要维护ivy.xml不需要维护.classpath文件。
配置步骤:
1、Window->preference->ant->RunTime->Classpath->Ant Home Entries,
右边Add External Jars,添加org.apache.ivy_2.1.0.cr1_20090319213629.jar。
2、安装Ivy插件:Help->Install new software->add,
Name: IvyDE,Location: http://www.apache.org/dist/ant/ivyde/updatesite
安装成功后重启eclipse;
3、重启eclipse后,Window->preference->ivy->settings
Ivy settings path设为d:/workspace/ivysettings.xml(这个值取决于你的环境)
至此,Eclipse的ivy插件配置好了,然后就可以为你的项目classpath添加ivy依赖了:
选中项目->右键 属性->Java Build Path->Libraries->Add Library...->IvyIDE Managed Dependencies->finish->OK
然后神奇的事情就出现了——虽然你一个jar包也没下载,只是在ivy.xml里面声明了一下,但是你的项目已经可以编译通过了,就好像那些第三方类库已经在你本地了一样。
caolaosanahnu
关注
关注
点赞
收藏
打赏
评论
让开发自动化: 利用 Ivy 管理依赖项
http://www.ibm.com/developerworks/cn/java/j-ap05068/index.html实际上,所有软件开发项目都必须依靠来自其他项目的源代码。例如,许多项目可能依靠 log4j 等日志记录工具和 Struts 之类的 Web 框架。您的开发团队不会维护其他项目的源代码,但要依靠其 API 来实现项目中的定制软件。您的软件所依靠的其他项目数量越多(包括这些项
复制链接
扫一扫
专栏目录
常见网站开发技术之二:利用 Ivy 管理依赖项
沙丁鱼的专栏
08-12
784
让开发自动化: 利用 Ivy 管理依赖项使用公共存储库和 Apache Ant 共享其他项目的源代码级别: 初级Paul Duvall, CTO, Stelligent Incorporated2008 年 6 月 10 日管理项目和工具之间的源代码依赖项往往非常困难,但并不一定总是如此
ivy操作大全
谷雨
06-19
1万+
1. 设置缓存目录
默认为:${user.home}/cache,
在运行ant时,设置如ivy.default.ivy.user.dir=f:/ivy2,所以它会缓存到f:/ivy2/cache
e.g. ant -Divy.default.ivy.user.dir=f:/ivy2
2. ivy中引入maven依赖包
在ivy.xml中
ivy tokens m
参与评论
您还未登录,请先
登录
后发表或查看评论
Apache Ant:5:使用Ivy进行依赖管理
知行合一 止于至善
12-11
525
Apache Ant中并没有直接提供依赖管理,这也是后来Maven和Gradle之类的Java构建工具能够快速抢占地盘的重要原因之一,Apache Ivy是Apache Ant的一个子项目,用来给Apache Ant提供依赖管理,这篇文章通过一个简单的Spring MVC的demo应用,结合Ant和Ivy,来介绍如何在Ant的项目中使用Ivy进行依赖管理。
用Apache Ivy实现项目里的依赖管理
热门推荐
Intelligent Web
05-11
2万+
Apache Ivy是一个管理项目依赖的工具。它与Maven
Apache Maven 构建管理和项目管理工具已经吸引了 Java 开发人员的注意。Maven 引入了 JAR 文件公共存储库的概念,可通过公开的 Web 服务器访问(称为 ibiblio)。Maven 的方法减少了 JAR 文件膨胀的情况,不会占用大多数版本控制存储库。但使用 Maven 时,它会鼓励您采用其 “惯例优于配置” 的方法来构建软件,这会制约您定制构建脚本的灵活性。
但问题是Maven过于Heavy,而大部分已有的项目都用An
Ivy依赖冲突时如何让低版本的胜出
daquan198163
12-27
412
在相应的dependency里面加上force=&quot;true&quot;,就会强制使用这个低版本的jar,忽略其它间接依赖的高版本的;
参考 http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html
Forcing revision
Finally, the depende...
gradle 过滤java_java-Gradle排除依赖项内的特定文件
最新发布
weixin_34234741的博客
03-04
799
我想知道是否仍然要排除下载依赖项(不是传递性依赖项)内的特定文件。我将一个构建从Ant + Ivy切换到Gradle,而这是在Ivy之前完成的。 我问是因为我有一个单独的依赖项,其中包含我们要下拉的Artifactory中许多已编译的wsdl jar,但是我不想下载依赖项中的所有jar。在Ivy中,其设置如下:这6个工件在一个仓库repo / dep.location / example / 7....
ivy解析依赖失败
外星人
06-01
736
用了ivy管理项目依赖,但是添加依赖
<dependency org="org.springframework" name="spring-webmvc" rev="3.1.1.RELEASE"/>
的时候老是提示解析错误,其中一行信息
unresolved dependency: javax.mail#mail;1.4: not found
后尝试修改了本地nexus版本,...
ivy java_java – Ivy无法解决依赖:要检查什么,该怎...
weixin_35743031的博客
02-12
58
我正在使用Ivy来解决我的小项目中的依赖.这是我第一次这样做,因为我的项目非常小,所以要学习更多.我在5分钟前尝试下载log4j时出现问题.我的配置非常基础,我有一个ant任务:我的Ivy.xml文件是这样的:????????问题似乎发生在常春藤试图下载jms 1.1(我想它需要log4j),正如我在控制台中看到的那样::::::::::::::::::::::::::::::::::::::::...
ivy学习与练习
小小菜鸟的博客
06-17
5209
感谢同事给的学习资料!本文来自一位我非常佩服的同事,虽说他也是刚接触这些知识,但超强的学习能力是我所敬佩的。
Apache Ivy是一个优秀的管理(记录、跟踪、解析和报告)项目依赖的工具,可与Apache Ant紧密集成。目前网上关于ivy的文章比较少,比较全面的资料有ivy自带的英文文档,如有疑惑可反复查看文档说明。通过学习文档结合下面的例子学习效果会更好。
使用Ivy管理项目中的依赖
weixin_34417635的博客
06-07
114
Ivy是什么
Ivy是一个跟踪管理项目直接以来关系的工具。Ivy具有良好的灵活性和可配置性,使其可以适应各种不同的依赖管理和构建过程要求;虽然Ivy作为依赖管理工具,其可以与Apache Ant进行紧密集成,在依赖管理中充分利用Ant提供的强大的任务功能。Ivy是一个开源项目,它提供了很多强大的功能,但是最受欢迎和最有用的特性是它的灵活性、与ant集成、传递依赖管理。
下面我们通过一个简单的例...
ivy中文参考文档(11)-ant任务
敖小剑的博客
07-23
142
1) ant任务
使用ivy的主要和最频繁的方式是在ant构建文件中。不过,ivy也可以作为独立的应用被调用。
如果你使用ant版本1.6.0 或更高,你仅仅需要添加ivy的命名空间到你的项目中(你的project标签的属性)
xmlns:ivy="antlib:org.apache.ivy.ant"
这样你就可以调用ivy任务了。
如果你想...
ivy本地库引用设置
yulchaochow的专栏
12-06
3195
ivy的本地库设置
ivy教程(8)-使用ivy模块配置
敖小剑的博客
10-04
386
这个教程介绍ivy文件中的模块配置的使用。ivy模块配置事实上是一个非常重要的概念。某些人甚至告诉我使用ivy而不用ivy配置就像吃乳酪而不动就在你旁边的Chateau Margaux 1976!
严肃的说,ivy中的配置可以更好的理解为你的模块的视图,你将可以看到在这里他们将如何被高效地使用。
关于配置的参考文件可以在这里
和这里
找到。
1) Introduc...
使用ivy管理jar包
qq_32406745的博客
07-05
1626
以上边的ivy.xml中的配置为例来说明:
1.在工程管理jar包的目录下新建一个文件夹取名为你的jar包的名字即freemarker-----》org来找的就是这个名字
2.然后在该文件夹下边再新建一个文件夹名字为上边的name的名字即freemarker,如果这里有多个就分别取不一样的
3.在最下边的文件夹建一个ivy和jars文件夹,ivy里边建一个xml取名方式ivy-版
常用jar包的pom文件
从小白的成长之路
07-22
5225
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
wusc.edu.common
edu-common-parent
1.0-SNAPSHOT
pom
edu-common-parent
http://mav
Ivy配置
大米时代 李东龙
01-23
1万+
作者:李东龙
大概ivy涉及到了三个配置和一些j相关的ar包。
配置文件包括:ivysettings.xml, ivysettings.properties和ivy.xml。
ivysettings.xml, ivysettings.properties这两个是ivy在项目中的公共配置文件在eclipse中对ivy进行配置,找到这两个配置文
ivy java_使用Ivy管理项目中的依赖
weixin_33344952的博客
02-12
252
Ivy是什么Ivy是一个跟踪管理项目直接以来关系的工具。Ivy具有良好的灵活性和可配置性,使其可以适应各种不同的依赖管理和构建过程要求;虽然Ivy作为依赖管理工具,其可以与Apache Ant进行紧密集成,在依赖管理中充分利用Ant提供的强大的任务功能。Ivy是一个开源项目,它提供了很多强大的功能,但是最受欢迎和最有用的特性是它的灵活性、与ant集成、传递依赖管理。下面我们通过一个简单的例子看一下...
ivy教程(6)-项目依赖
敖小剑的博客
09-29
418
这个示例将举例说明在两个项目之间的依赖。
depender项目声明它使用dependee 项目。我们将阐明两个事情:
* 被独立的项目声明的公共类库将被依赖的项目自动获取
* depender项目将获取dependee项目的"最新"版本
1) 使用到的项目
1. dependee
dependee项目非常简单。它依赖apache类库com...
intellij idea包依赖 ivy 和ant结合使用
weixin_34216036的博客
03-03
1525
为什么80%的码农都做不了架构师?>>>
...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
caolaosanahnu
CSDN认证博客专家
CSDN认证企业博客
码龄16年
暂无认证
951
原创
3万+
周排名
182万+
总排名
421万+
访问
等级
5万+
积分
693
粉丝
367
获赞
92
评论
911
收藏
私信
关注
热门文章
Eclipse 安装Gradle插件
60351
超强实用:中国各地特产风味大搜捕!
41834
linux中Shell历史命令记录文件的路径是什么
36908
log4j.rootLogger 与log4j.rootCategory 有什么区别 .
27730
ssh登陆connection refused的解决办法
27144
分类专栏
Unix
92篇
C++ Unix C++
2篇
JAVA
189篇
OOAD&UML
2篇
XML
29篇
Oracle
146篇
JDBC
10篇
Hibernate
37篇
Javascript
17篇
Servlets
10篇
JSP
10篇
struts
5篇
EJB
11篇
Spring
79篇
PL/SQL PROC C
1篇
aspectj
3篇
ant
14篇
Rule engine-drools
7篇
eclipse
31篇
cvs svn vss
25篇
Jasper report
1篇
JMS
19篇
Log4j
16篇
Matlab
3篇
Validation-OVAL
1篇
sybase
13篇
mysql
11篇
postgresql
sqlserver
weblogic
3篇
IDL corba
1篇
webservice
18篇
open source
23篇
Cache & Pool
2篇
Test
12篇
Regex
4篇
Design pattern
12篇
workflow-JBPM
1篇
clojure
7篇
Hadoop
35篇
Apache Camel
25篇
AutoSys
15篇
Gemfire
3篇
c#
18篇
school
2篇
Books
4篇
hardware
2篇
DOS
9篇
ARM
1篇
Office
57篇
English
10篇
Android
1篇
常识
10篇
生活
30篇
科学知识
26篇
人物历史
22篇
链接
9篇
Portal-liferay
5篇
Database
7篇
windows
20篇
wicket
1篇
软件开发
3篇
business-financial
158篇
歌词
1篇
手机
3篇
cloud
13篇
thrift
4篇
vbscript
2篇
insurance
4篇
apache-poi
27篇
Tomcat
26篇
jquery
6篇
PowerDesign
1篇
UML
17篇
Visio
4篇
Maven
57篇
HTML
19篇
Flex
1篇
JfreeCharts
1篇
JXL
Lucene
2篇
Jackrabbit
1篇
Velocity
4篇
Acegi
1篇
DWR
2篇
JSON
3篇
JSF
1篇
apache-commons
10篇
JMX
2篇
ESB
6篇
CruiseControl
1篇
Security
7篇
JMS-tibco
11篇
JCAPS
2篇
LDAP
7篇
JProfiler
1篇
Restful
2篇
SSRS
5篇
SSIS
5篇
IIS
2篇
ERP-CRM-SCM
Siebel
ProjectManagement
1篇
Network
20篇
Protobuf
2篇
心情
2篇
职业规划
3篇
apache-ServiceMix
2篇
OSGI
4篇
apache-Karaf
1篇
Apache
4篇
QuickFix
3篇
编译原理
6篇
数据结构与算法分析
19篇
Jaxb
3篇
Camel
25篇
IBM-MQ
1篇
Ftp
9篇
RMI
3篇
JavaMail
1篇
Actor
1篇
Netty
2篇
SSH
1篇
Quartz
2篇
DataWarehouse
1篇
DataMine
5篇
struts2
35篇
MangoDB
11篇
SiteMesh
5篇
Architect
3篇
计算机系统
1篇
分布式
2篇
SpringMVC
6篇
Git
20篇
Gradle
2篇
Hack
4篇
Tools
4篇
Mybatis
8篇
Mina
1篇
性能
2篇
JPA
1篇
JCA
1篇
Code security&quality
9篇
R语言
2篇
st
JVM
6篇
my
urlrewrite
2篇
Nginx
5篇
FreeMarker
1篇
url
vmvare
1篇
ha
ja
Python
1篇
SMS
1篇
Scala
2篇
NIO
2篇
JAVAFX
1篇
extjs
Jetty
3篇
CXF
3篇
perforce
sc
Axure
1篇
css
1篇
Statistics
1篇
oozie
1篇
akka
2篇
akka
转载
7篇
最新评论
java.library.path属性在代码中设置不生效问题
后羿的十个太阳:
还是不生效啊。。
ssh登陆connection refused的解决办法
铁杆一个:
相互抄袭
java 泛型 extends 多个
打破砂锅问到底007:
建议博主可以加上目录,表达更清晰一些~
Java泛型编程时,编译器忽略泛型参数的具体类型,认为使用泛型的类、方法对Object都适用,这在泛型编程中称为类型信息檫除
git中如何合并某个指定文件?
yxsr_zxx:
--patch时顺序弄错了吧
libtibrvjsd64.so: libssl.so: wrong ELF class: ELFCLASS32
qq_42568207:
所以怎么1解决啊 大佬
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
在Linux执行命令报错”Arg list too long”的原因分析
Get classpath for current running thread
Package javax.ws.rs
2015年53篇
2014年265篇
2013年387篇
2012年927篇
2011年132篇
2009年7篇
目录
目录
分类专栏
Unix
92篇
C++ Unix C++
2篇
JAVA
189篇
OOAD&UML
2篇
XML
29篇
Oracle
146篇
JDBC
10篇
Hibernate
37篇
Javascript
17篇
Servlets
10篇
JSP
10篇
struts
5篇
EJB
11篇
Spring
79篇
PL/SQL PROC C
1篇
aspectj
3篇
ant
14篇
Rule engine-drools
7篇
eclipse
31篇
cvs svn vss
25篇
Jasper report
1篇
JMS
19篇
Log4j
16篇
Matlab
3篇
Validation-OVAL
1篇
sybase
13篇
mysql
11篇
postgresql
sqlserver
weblogic
3篇
IDL corba
1篇
webservice
18篇
open source
23篇
Cache & Pool
2篇
Test
12篇
Regex
4篇
Design pattern
12篇
workflow-JBPM
1篇
clojure
7篇
Hadoop
35篇
Apache Camel
25篇
AutoSys
15篇
Gemfire
3篇
c#
18篇
school
2篇
Books
4篇
hardware
2篇
DOS
9篇
ARM
1篇
Office
57篇
English
10篇
Android
1篇
常识
10篇
生活
30篇
科学知识
26篇
人物历史
22篇
链接
9篇
Portal-liferay
5篇
Database
7篇
windows
20篇
wicket
1篇
软件开发
3篇
business-financial
158篇
歌词
1篇
手机
3篇
cloud
13篇
thrift
4篇
vbscript
2篇
insurance
4篇
apache-poi
27篇
Tomcat
26篇
jquery
6篇
PowerDesign
1篇
UML
17篇
Visio
4篇
Maven
57篇
HTML
19篇
Flex
1篇
JfreeCharts
1篇
JXL
Lucene
2篇
Jackrabbit
1篇
Velocity
4篇
Acegi
1篇
DWR
2篇
JSON
3篇
JSF
1篇
apache-commons
10篇
JMX
2篇
ESB
6篇
CruiseControl
1篇
Security
7篇
JMS-tibco
11篇
JCAPS
2篇
LDAP
7篇
JProfiler
1篇
Restful
2篇
SSRS
5篇
SSIS
5篇
IIS
2篇
ERP-CRM-SCM
Siebel
ProjectManagement
1篇
Network
20篇
Protobuf
2篇
心情
2篇
职业规划
3篇
apache-ServiceMix
2篇
OSGI
4篇
apache-Karaf
1篇
Apache
4篇
QuickFix
3篇
编译原理
6篇
数据结构与算法分析
19篇
Jaxb
3篇
Camel
25篇
IBM-MQ
1篇
Ftp
9篇
RMI
3篇
JavaMail
1篇
Actor
1篇
Netty
2篇
SSH
1篇
Quartz
2篇
DataWarehouse
1篇
DataMine
5篇
struts2
35篇
MangoDB
11篇
SiteMesh
5篇
Architect
3篇
计算机系统
1篇
分布式
2篇
SpringMVC
6篇
Git
20篇
Gradle
2篇
Hack
4篇
Tools
4篇
Mybatis
8篇
Mina
1篇
性能
2篇
JPA
1篇
JCA
1篇
Code security&quality
9篇
R语言
2篇
st
JVM
6篇
my
urlrewrite
2篇
Nginx
5篇
FreeMarker
1篇
url
vmvare
1篇
ha
ja
Python
1篇
SMS
1篇
Scala
2篇
NIO
2篇
JAVAFX
1篇
extjs
Jetty
3篇
CXF
3篇
perforce
sc
Axure
1篇
css
1篇
Statistics
1篇
oozie
1篇
akka
2篇
akka
转载
7篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
caolaosanahnu
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值