2012-07-13 86 views
7

我一直在浏览Ivy文档,并对ivy.jar中发现的默认ivysettings.xml有个疑问。ivysettings.xml:我可以在不修改jar或完全替换它们的情况下“修改”默认设置吗?

我想要做的就是将公共存储库更改为我们拥有的本地Maven存储库。而已。我可以将所有的ivysettings*.xml文件复制到我的项目中,并使用<ivy:settings>指向它,但是这复制了很多东西。我也可以修改ivy.jar,但这增加了维护难题。开发人员必须使用我的ivy.jar,如果我们转到新版本,我不得不再次修改它。

那么,我该如何保持所有的标准常春藤设置,并简单地切换存储库使用?我只是想覆盖我的变化到了艾维已经有的。


而且两个问题:

  • 有什么ivyconf*.xml文件和文件ivysettings*.xml之间的区别?为什么常春藤有重复配置?
  • 什么是常春藤的好书?我现在正在使用Manning的Ant in Action,它以某种总结的方式涵盖了常春藤,并且有点过时。 Ivy网站上的资源本身就很糟糕。

回答

1

终于搞明白了。

我从jar中复制了ivysettings.xml文件并作了一些修改。需要注意的是,第一包括指向常春藤${ivy.lib.dir},而不是一个XML文件${ivy.default.settings.dir}

<ivysettings> 
<settings defaultResolver="default"/> 
    <include file="${ivy.lib.dir}/ivysettings-public.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/> 
</ivysettings> 

我有我自己的ivysettings-public.xml是一样的默认,但现在定义一个root到我的仓库。(是的,它的本地主机现在,但我会把它设置为实际的服务器一旦我得到的一切解决):现在

<ivysettings> 
    <resolvers> 
     <ibiblio name="public" m2compatible="true" 
       root="http://localhost:8081/artifactory/repo" /> 
    </resolvers> 
</ivysettings> 

,在我build.xml,我有以下几点:

<property name="ivy.lib.dir"  value="${basedir}/ivy.lib"/> 

<taskdef uri="ivylib:org.apache.ivy.ant" 
    resource="org/apache/ivy/ant/antlib.xml"> 
    <classpath> 
     <fileset dir="${ivy.lib.dir}"> 
      <include name="ivy.jar"/> 
      <include name="ivy-*.jar"/> 
     </fileset> 
    </classpath> 
</taskdef> 

<ivy:configure file="${ivy.lib.dir}/ivysettings.xml" override="true"/> 

这似乎是诀窍。

+0

,您不应该复制通常的ivysettings.xml。 你可以在我的答案中写下 。然后做你该做的事情。但我必须说。这些基础知识在apach-ivy下载src中的示例中进行了介绍。 – 2012-07-14 21:05:07

6

这是我ivysettings.xml文件

<ivysettings> 
    <include url="${ivy.default.settings.dir}/ivysettings.xml"/> 
    <resolvers> 
     <chain name="download-chain" changingPattern=".*" checkmodified="true" > 
      <ibiblio name="maven" m2compatible="true" /> 
     </chain> 
    </resolvers> 
</ivysettings> 

请注意,我在这里写我额外的解析器,而是使用一切从标准之一,这是在网址中指定。这会加载ivy.jar文件中的ivysettings.xml设置。

至于ivyconf * .xml。我认为它现在已被弃用。 Ivysettings是这样做的新方法。

资源非常糟糕。我完全同意这一点。但是,stackoverflow.com中的很多答案都足够冗长,并且实际上试图预测问题

Mark O'Connor的答案特别详细且直截了当。你必须接受这样一个事实,即你正在学习新的东西,只是给它时间。

+0

我知道它会带我的时间把它捡起来,但即使是最基础的解释不清。这将是第一个问题,如果他们' – 2012-07-13 20:23:20

+0

我得到这个权利,将会有:指向ivysettings.xml罐?因为我从来没有设置变量ivy.default.settings.url,而且我的文件系统上也没有ivysettings.xml。 – 2015-12-11 09:04:34

+0

很久以前,但用-d或-v运行ant,它应该显示大量信息,包括变量和属性值 – 2015-12-11 09:28:36

0

在你的build.xml包括以下内容:

<property name="ivy.settings.dir" value="PATH OF SETTINGS" /> 
<property file="${ivy.settings.dir}/ivysettings.properties" /> 
<ivy:settings file="${ivy.settings.dir}/ivysettings.xml" /> 
相关问题