【问题标题】:Ivy Configuration Help常春藤配置帮助
【发布时间】:2011-10-26 12:27:05
【问题描述】:
我已经阅读了 Ivy 文档和其他一些教程,但现在我第一次尝试在项目中实际使用它,但我立即遇到了一些障碍。
- 为了练习,我想编写我自己的所有配置 (XML) 文件。不确定将 ivy.xml、ivyconf.xml 或 ivy-settings.xml 放在哪里:我是否将它们放在与 build.xml 相同的目录中?
- 除了 ivy.xml、ivyconf.xml 和 ivy-settings.xml,还有其他我应该知道的配置文件吗?我应该把它们放在哪里?
- IvyDE 只是图形化编辑 ivyconf.xml 的图形 Eclipse 插件还是编辑其他文件?
感谢您的任何意见 - 很难找到关于这个神奇工具的好信息!
【问题讨论】:
标签:
apache
configuration
ivy
【解决方案1】:
您只需要一个文件ivysettings.xml。您可以将它放在 build.xml 旁边或任何所需的项目目录中。或者,您可以将一个或多个属性文件用于不同的用途。
除了 ivysettings.xml 之外,请记住关于 ivy 缓存目录的信息。通常,所有依赖解析问题的最佳解决方案是通过删除此目录来清理 ivy 缓存。
IvyDE 允许您在 Eclipse 中解决项目依赖关系。 IvyDE 创建名为 ivy.xml 的新类路径容器。在此容器中,您将找到已解析的库。
我建议你在 Eclipse 中使用本地或 Intranet ivy 存储库,因为如果解决需要一些时间,它会减慢项目的加载速度。
例如,我放置了我在项目中使用的 ivysettings.xml。正如您在 Eclipse 中看到的,有 eclipse-ivy.properties 文件。在这个文件中,我命令 Ivy 在 Eclipse 中使用本地存储库。在 Ant 脚本中我默认使用远程存储库,但是有一个选择本地存储库的选项。
<?xml version="1.0" encoding="UTF-8" ?>
<ivysettings>
<settings defaultResolver="${ivy.resolver}" />
<statuses default="development">
<status name="release" integration="false"/>
<status name="integration" integration="true"/>
<status name="development" integration="true"/>
</statuses>
<resolvers>
<ssh name="remote" checkconsistency="true" checkmodified="true" descriptor="required">
<ivy pattern="ssh://***/home/ivy/repository/[organisation]/[module]/[revision]/ivy.xml"/>
<artifact pattern="ssh://***/home/ivy/repository/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
</ssh>
<filesystem name="local">
<ivy pattern="${user.home}/.local-ivy-repository/[organisation]/[module]/[revision]/ivy.xml"/>
<artifact pattern="${user.home}/.local-ivy-repository/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
</filesystem>
</resolvers>
</ivysettings>
椭圆常春藤属性:
ivy.resolver=local
【解决方案2】:
一般来说,最好创建一个标准化的 ivy-settings.xml 文件并将其托管在您的构建可以轻松访问它的位置。这个文件通常对于所有项目都是相同的,一旦你正确设置它就很少改变。在我的开发组中,我们将 ivy-settings.xml 文件托管在 Web 服务器上,以便通过 URL 轻松引用它。
我们使用 Ant 构建,因此我们还提出了一个标准化的 ant 构建文件,该文件可以托管在某个地方并导入到 Ant 构建脚本中,或者如果需要进行任何类型的定制,也可以简单地复制到项目的目录中。
我发现最好保留 Ivy 配置文件,并通过覆盖构建脚本和/或 ivy.xml 文件中的默认值来进行任何类型的自定义。几乎所有您需要更改的内容都可以被覆盖。我建议保持 Ivy 配置文件不变,因为它使其他用户更容易构建您的项目。如果您对配置文件进行了大量更改,那么任何其他希望构建您的项目的开发人员都必须在其本地 Ivy 安装上复制这些更改,以便运行本地构建。那是一种糟糕的魔力。
IvyDE 插件为您的 ivy.xml 和 ivy-settings.xml 文件提供了编辑器。根据文档,它还提供了自动下载项目依赖项的方法,包括自定义控制台和反向依赖项浏览器,以帮助排除和解决依赖项冲突。不过,我只使用编辑器,所以我不能保证其他工具。
和 Alexey 一样,我建议使用 Ivy 的存储库管理器。 Artifactory 做得很好;一旦运行,它就很容易设置并坚如磐石。
我同意文档还有很多不足之处;我花了几个星期的实验来真正掌握所有部分是如何组合在一起的。最后,这完全值得。一旦你解决了所有的问题,一个经过良好调整的工件管理系统就真的很漂亮了。