【问题标题】:Setting ivy home directory in Ant在 Ant 中设置 ivy 主目录
【发布时间】:2011-06-23 12:37:23
【问题描述】:

我想将 ivy.default.ivy.user.dir 设置为默认 ${user.home}/.ivy2 以外的其他值。我可以使用

在命令行上执行此操作

ant -Divy.default.ivy.user.dir=${WORKSPACE}/IVYCACHE。但是,我想在没有命令行参数的情况下设置它。我尝试在我的 build.xml、common.xml 和 ivysettings.xml 中设置此属性。奇怪的是,它似乎将默认缓存设置为该路径,但详细输出显示 user.dir 没有默认设置,因此它使用 ${user.home}/.ivy2 路径。

这是我在 build.xml 文件中设置 user.dir 时的输出。 奇怪的是,它将默认缓存设置为我用于 user.dir 的路径

[ivy:buildlist] 没有为默认参考“ivy.instance”找到 ivy:settings。将使用默认实例 [ivy:buildlist] 加载 jar:file:/usr/local/ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivy.properties [ivy:buildlist] 搜索设置文件:尝试 /home/hudson/.hudson/jobs/Next_CI/workspace/ivysettings.xml [ivy:buildlist] 搜索设置文件:尝试 /home/hudson/.hudson/jobs/Next_CI/workspace/ivyconf.xml [ivy:buildlist] 搜索设置文件:尝试 ivysettings.xml [ivy:buildlist] 搜索设置文件:尝试 ivyconf.xml [ivy:buildlist] 没有找到设置文件,使用默认... [ivy:buildlist] :: Ivy 2.2.0 - 20100923230623 :: http://ant.apache.org/ivy/ :: [ivy:buildlist] jakarta commons httpclient 未找到:使用 jdk url 处理 [ivy:buildlist] :: 加载设置 :: url = jar:file:/usr/local/ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings.xml [ivy:buildlist] 包括 url: jar:file:/usr/local/ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings-public.xml [ivy:buildlist] 未定义默认缓存:设置为 /home/hudson/.hudson/jobs/Next_CI/workspace/ivy2/cache [ivy:buildlist] 包括 url:jar:file:/usr/local/ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings-shared.xml [ivy:buildlist] 包括 url:jar:file:/usr/local/ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings-local.xml [ivy:buildlist] 包括 url:jar:file:/usr/local/ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings-main-chain.xml [ivy:buildlist] 包括 url: jar:file:/usr/local/ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings-default-chain.xml [ivy:buildlist] 设置已加载(71 毫秒) [ivy:buildlist] 默认缓存:/home/hudson/.hudson/jobs/Next_CI/workspace/ivy2/cache

然后,它声称 user.dir 没有在任何地方设置。 解决:

[ivy:resolve] 加载 jar:file:/usr/local/ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivy.properties [ivy:resolve] jakarta commons httpclient 未找到:使用 jdk url 处理 [ivy:resolve] :: 加载设置 :: 文件 = /home/hudson/.hudson/jobs/Next_CI/workspace/common/ivysettings.xml [ivy:resolve] 没有定义默认的 ivy 用户目录:设置为 /home/hudson/.ivy2

这是我的 build.xml 行:

<property name="ivy.default.ivy.user.dir" value="${basedir}/ivy2" />

我尝试将此行添加到 common/ivysettings.xml 和 common/common.xml 中,但没有成功。

【问题讨论】:

标签: ant properties ivy


【解决方案1】:

我添加了您在 ivy 二进制下载中提供的示例 build.xml 中指定的确切行,并且可以在samples 文件夹内的ivy2 子文件夹中看到下载的工件。

...
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />
<property name="ivy.default.ivy.user.dir" value="${basedir}/ivy2" />
...

我正在使用 ivy 2.2 和 ant 1.8.2。你能检查一下是否同样适合你吗?

[编辑]: 来自docs

其实所有的蚂蚁属性都是 导入到常春藤变量时 配置完成(如果你调用 ivy 来自蚂蚁)。这意味着如果你 在调用之后定义一个 ant 属性 配置,它将不可用 作为常春藤变量。

【讨论】:

  • 我们正在运行 ivy 2.2 和 ant 1.8.1。不知道你的意思是尝试这条线。我已将它放在我的顶级 build.xml 文件中,但它不起作用。也许这是 1.8.1 中的一个错误。我会尝试更新 ant。
  • 试过 ant 1.8.2,但在输出中仍然看不到默认用户目录,它没有把东西放在我想要的地方。
  • 我确实使用示例 build.xml 文件尝试了您的建议,当然它可以工作。那么,有人可以给我提示一下为什么它在我的 build.xml 中失败了吗?
  • @user561638。参考文档更新了答案,这可能表明您的问题的可能原因
  • 我终于想通了。我不得不将这一行放在我的 common/common.xml 文件中,而别无他处。否则,我就是在踩我自己的设置。
【解决方案2】:

环境变量 ANT_OPTS 允许设置 jvm 参数。因此,您可以将调用“ant”shell 脚本时使用的命令行参数放入 ANT_OPTS。例如。在 m$windoozer 下:

ANT_OPTS=-Divy.default.ivy.user.dir=C:/IVYCACHE

【讨论】:

    猜你喜欢
    • 2012-09-04
    • 2014-10-04
    • 2021-03-24
    • 2020-09-04
    • 2015-09-13
    • 2016-02-08
    • 1970-01-01
    • 2017-07-07
    • 2011-05-17
    相关资源
    最近更新 更多