【问题标题】:can I turn off the .ivy cache all together?我可以一起关闭 .ivy 缓存吗?
【发布时间】:2011-06-28 12:28:33
【问题描述】:

有没有办法告诉 ant/ivy 不使用本地 $HOME/.ivy2 缓存?

【问题讨论】:

标签: ant build properties ivy


【解决方案1】:

我将创建一个 ivysettings.xml 文件并使用 caches 指令指定我的缓存位置:

<ivysettings>
    <settings defaultResolver="central"/>
    <caches defaultCacheDir="${ivy.settings.dir}/cache"/>
    <resolvers>
        <ibiblio name="central" m2compatible="true"/>
    </resolvers>
</ivysettings>

我认为这比在构建文件中设置属性 ivy.default.ivy.user.dir 更明确,也更简洁。

更新

使用这种方法,ivy cleancache 任务可用于清除您指定的缓存目录。

<target name="clean-all" depends="clean">
    <ivy:cleancache />
</target>

【讨论】:

【解决方案2】:

full book on ivy 中,您可以查看“设置存储库”部分:

多个存储库在您的文件系统中使用相同的根。引用为 ${ivy.default.ivy.user.dir},默认情况下,这是您用户主目录中的目录 .ivy2

请注意,通过设置 Ivy 变量可以完成几件事。
要设置它们而不定义您自己的 ivysettings.xml 文件,您可以:

  • 如果您使用 Ant 中的 Ivy,请在构建文件中对 Ivy 的任何调用之前设置 Ant 属性
  • 如果从命令行使用 Ivy,请设置环境变量

例如:

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

打包器解析器还需要配置一些设置以避免${home}

<packager name="ivyroundup"
         buildRoot="/path/to/my/.ivy2/packager/build"
         resourceCache="/path/to/my/.ivy2/packager/cache"
         resourceURL="ftp://mirror.example.com/pub/resources/[organisation]/[module]/">
    <ivy pattern="http://ivyroundup.googlecode.com/svn/trunk/repo/modules/[organisation]/[module]/[revision]/ivy.xml"/>
    <artifact pattern="http://ivyroundup.googlecode.com/svn/trunk/repo/modules/[organisation]/[module]/[revision]/packager.xml"/>
</packager>

【讨论】:

  • 我无法设置 user.dir。请参阅stackoverflow.com/questions/4934948/… 上的帖子。就打包器解析器而言,请问这个文件在哪里?
  • 不要被打包解析器分心。它还执行缓存,但假设您没有使用它。
  • 在谈论“user.dir”时要小心。人们自然会假设您正在谈论 JVM 设置的当前工作目录属性。见download.oracle.com/javase/1.4.2/docs/api/java/lang/System.html
  • 想通了。我只需将该条目添加到我的 common.xml 文件而不是 build.xml 文件中。
猜你喜欢
  • 2012-06-20
  • 1970-01-01
  • 2013-02-16
  • 2018-11-10
  • 1970-01-01
  • 2021-03-14
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多