我一直在阅读常春藤文档,我ivysettings.xml对ivy.jar中发现的默认值有疑问.
我想要做的就是将公共存储库更改为我们拥有的本地Maven存储库.而已.我可以将所有ivysettings*.xml文件复制到我的项目中,并用<ivy:settings>它来指向它,但这复制了很多东西.我也可以修改ivy.jar,但这会增加维护难题.开发人员必须使用我的ivy.jar,如果我们转到新版本,我将不得不再次修改它.
那么,我如何保留所有标准常春藤设置并简单地切换存储库以使用?我只是想将我的变化叠加到常春藤已经拥有的东西上.
还有两个问题:
ivyconf*.xml文件和ivysettings*.xml文件之间有什么区别?为什么Ivy中有重复的配置?这是我的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>
Run Code Online (Sandbox Code Playgroud)
请注意,我在这里编写了额外的解析器,但是使用标准的其他所有内容,这在url中指出.这将从ivy.jar文件中的ivysettings.xml加载设置.
至于ivyconf*.xml.我认为现在已经弃用了.Ivysettings是实现这一目标的新方式.
资源非常糟糕.我完全赞同这一点.但是,stackoverflow.com中的很多答案都足够冗长,并且实际上试图预测问题
Mark O'Connor的答案特别冗长,直截了当.你必须接受这样一个事实:你正在学习新的东西,只要给它时间.
终于想通了。
我从 jar 中复制了 ivysettings.xml 文件并做了一些轻微的修改。请注意,第一个include指向 ivy 中的 XML 文件${ivy.lib.dir},而不是${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>
Run Code Online (Sandbox Code Playgroud)
我有自己的ivysettings-public.xml,与默认的相同,但现在定义了root我的存储库。(是的,现在是本地主机,但一旦解决了所有问题,我会将其设置为实际的服务器):
<ivysettings>
<resolvers>
<ibiblio name="public" m2compatible="true"
root="http://localhost:8081/artifactory/repo" />
</resolvers>
</ivysettings>
Run Code Online (Sandbox Code Playgroud)
现在,在我的 中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"/>
Run Code Online (Sandbox Code Playgroud)
这似乎可以解决问题。
| 归档时间: |
|
| 查看次数: |
3655 次 |
| 最近记录: |