IvyDE的类路径容器可与帮助你管理java Eclipse工程的类路径,基于你工程中Ivy文件里声明的依赖关系。
可以在容器里执行的任务如下:
创建一个容器:
快速创建:对于多数工程来说ivy.xml(或pom.xml)文件已经在java工程里了。所以你可以在ivy.xml上右击,然后选择“Add Ivy Library...“,就可以直接访问已经默认填好的类路径容器设置。
标准创建:添加IvyDE类路径容器额标准方式是使用Eclipse的”Build Path“:右击工程选择Build Path-->Add Libraries,然后选择"IvyDE Managed Dependencies"
然后选择ivy.xml或者maven pom.xml以及需要的配置
你可能需要给你的工程使用特定的设置,和global不一样的配置。勾上"Enable project specific settings",选择你自己的ivysettings.xml
现在类路径已经设置好了,你可以在一个独特的package explorer的文件夹(文件夹名字=ivy-file-name[conf1,conf2])看到所有的依赖
编辑类路径设置
在工程的生命周期中,你可以改变ivy.xml文件或者maven pom.xml,也可以改变它们的配置。这些属性可以从IvyDE 类路径容器的内容菜单访问
你也可以同多build path 配置来编辑:
打开build path-->Configure Build path...,选择"Libraries"面板,选中IvyDE 类路径容器,然后点击”Edit“按钮,IvyDE雷陆机构容器配置对话框就会跳出来
启动解析依赖关系
你可以明确的从类路径容器启动Ivy依赖解析,这个命令会调用”resolve“Ivy 任务,更新你的类路径容器。
还有一个”refresh“动作:这个动作和resolve相似,但是如果报告已经在cache中存在,它并不会执行完全的解析。如果你使用Apache Ant 和命令行工作这个尤其有用,它可以使你避免执行两次完全解析。这个也是在Eclipse workspace打开的时候类路径容器的默认执行动作(Windows > Preferences > Ivy),事实上是将类路径容器恢复到上次关闭workspace时的状态,前提是没有其他对ivy.xml同时进行的操作。
还有一个”reload settings“动作:IvyDE默认在每次需要解析的时候重载ivy settings 文件。但是假如ivy settins 文件是远程的,这个操作回事用户体验很慢。为了避免这种体验,你可以在preference页面,选择只在需要时加载,然后使用菜单上的”reload settings“动作。
你也可以通过Eclipse工具条上的按钮来触发工作空间里所有IvyDE类路径容器的解析(resolve,不是refresh!)
启动选中工程的解析:
选择你想解析的工程-->右击打开菜单-->选择Ivy-->Resolve
检索工程的依赖
可以使类路径容器由检索的依赖组成,jars可以使用一个特定的模式从工程中检索并且组成一个容器,以此可以替代指向Ivy cache里的jar文件组成的容器。
检索模式(Retrieve pattern)指定了相对工程的依赖拷贝路径
”Delete old retrieved artifacts“选项可以是IvyDE在每次检索前情况输出文件夹。注意,如果选择了改选项,除了那些之前被IvyDE检索到容器中其他组件的都会被删除
最后,你可以选择那些类型的组件可以被检索(*表示所有)
在Eclipse的workspace解析依赖关系
有些工程师由多个模块组成,这些模块之间通常都会有依赖,而这些依赖是由Apache Ivy 管理。Eclipse可以根据工程之间的依赖关系计算工程的构建顺序。为了利用这一优点,Apache IvyDE有能力将项目引用添加到位于workspace的依赖关系中,用于替代从库中下载其发布的组件。这样一来,开发可以在构建和发布组件到库里之前就开发多模块应用以及测试这些模块之间的交互。
考虑到每个多模块应用的多个项目都有大量代码。很多开发都有过这样的经历,尽管开发工作只在应用的几个独立部分进行(可能只有一个或两个工程),但是还得等到Eclipse将所有的相关代码都构建完成。如果最新发布到Ivy库里的组件和开发当前并没有用到的模块代码相同,那么关掉eclipse工作空间的那个工程,解析工程的依赖下载相应组件将大大加速编译过程。
首先,每个应用模块在Eclipse中应该是一个独立的工程,并且每个工程都应该有一个配置好的IvyDE类路径容器。然后进入类路径容器的”classpath“面板,选择”Resolve dependencies in workspace“来启用在工作空间内的解析。
值得注意的是:为了工作空间解析正常工作,ivy.xml里的info信息必须设置合理:
--org 和name
--如果指定了rev,依赖关系应当指定适当的范围
--如果没有设置rev,只会匹配到最新(latest)的依赖
--status应该和需要的匹配:配置了latest.intergration的依赖只会匹配到info信息里status="interation"的被依赖模块
在某些配置中,如果你想将自己的解析器和workspace解析器混合使用,还希望传递依赖能够在它们之间很好的工作,你可能需啊哟将解析魔改改为dynamic
还要注意如果ivysettings.xml里的任意一个解析器的force属性设置成了true,那么workspace解析器可能不会正确绑定项目,因为forced解析器会优先使用。
启动类路径由IvyDE管理的软件或单元测试
IvyDE类路径容器也可以用于启动配置,执行或调试。
默认行为:
默认情况下将使用容器,因为它包含在你项目的默认类路径中。这个配置你在java 类上点击”Run As“是就会隐式使用。你在启动类路径中看到的容器和你在包浏览器中的项目中看到的一样
使用默认编译路径来启动工程在某些情况下可能不合适。例如你可能在容器中配置了一些附加库来支持单元测试,但是这些附加库可能导致应用在运行时不稳定。
手动管理类路径:
当你需要更细粒度控制哪些些配置在运行类路径上是可见的,可以手动编辑运行时类路径。
通过创建一个启动配置,你讲获得如上所述的默认类路径。因此第一步就是移掉它。最有可能的是,你需要重新在user Entries中加上你的工程。然后加上IvyDE容器,选择”Advanced“
选择"Add Library"
选择"IvyDE Managed dependencies":
选择访问Ivy.xml文件的绝对路径和适当的配置
注意:在启动配置里可以在你创建的容器中编辑或者手动启动一个解析。但是也可以在每个工程启动之前先启动一个解析。如果解析过程不太长的话,建议这么做。否则你将不得不在每次改变ivy.xml后重新创建一个容器。
开启在启动之前解析,进入"Advanced"标签,选择"Resolve before lanuch"
点击”Finish“,观察结果:
使用IvyDE处理maven pom.xml
Use IvyDE in concert with WTP