【问题标题】:Ivy buildnumber not working常春藤版本号不起作用
【发布时间】:2013-09-19 15:03:01
【问题描述】:

我正在尝试让 ivy:buildnumber 为我的构建的 publish 目标工作,但遇到了一个奇怪的错误。

我的publish 目标:

<target name="publish" depends="package">
    <ivy:buildnumber resolver="default-resolver" organisation="myorg" module="myapp" revision="0.2" />
    <ivy:publish resolver="default-resolver" pubrevision="${ivy.new.revision}" overwrite="true" update="true">   
        <artifacts pattern="gen/dist/pub/[artifact].[ext]" />   
    </ivy:publish>
</target>

我得到的错误:

publish:
[ivy:buildnumber] :: loading settings :: url = jar:file:/home/myuser/sandbox/dsi/workbench/eclipse/4.2/eclipse/plugins/org.apache.ivy.eclipse.ant_2.3.0.final_20130110142753/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml

BUILD FAILED
/home/myuser/sandbox/dsi/workbench/eclipse/workspace/myapp/build/build-core.xml:289: Unknown resolver: default-resolver

问题是,我的 Ivy 设置文件不在 org/apache/ivy/core/settings/ivysettings.xml。 我的 Ivy 设置文件位于 ~/ivy/ivy-settings.xml。

所以我认为不知何故我没有正确配置ivy:buildnumber,因此它默认为 Ivy 附带的任何 Ivy 设置文件。由于我的default-resolver 没有在随附的设置文件中定义,因此它找不到要发布的解析器。

有什么想法吗?提前致谢!

更新:

我的&lt;ivy:settings&gt;目标:

<target name="setup-ivy">
    <ivy:settings url="file:///home/myuser/ivy/ivy-settings.xml"/>
</target>

还有我的ivy-settings.xml:

<ivysettings>  
    <properties file="ivy-settings.properties"/>
    <settings defaultResolver="default-resolver"/>
    <latest-strategies>
        <latest-lexico/>
    </latest-strategies>
    <credentials host="${ivy.repo.root}" realm="${ivy.std.repo.realm}" username="${ivy.std.repo.username}" password="${ivy.std.repo.password}"/>
    <resolvers>  
        <chain name="default-resolver" returnFirst="true">
            <url name="std-repo">
                <ivy pattern="${ivy.repo.root}/${ivy.module.pattern}"/>
                <artifact pattern="${ivy.repo.root}/${ivy.artifact.pattern}"/>
            </url>
        </chain>
    </resolvers>  
    <modules>
        <module organisation="myorg" name="*" resolver="default-resolver"/>
    </modules>
</ivysettings>

【问题讨论】:

  • 您确定您的“发布”目标实际上是在调用“setup-ivy”目标吗?跟随你的“包裹”目标,看看是否真的如此。
  • 感谢@EyadEbrahim (+1) - 是的publish 调用package,它调用compile,它调用resolve(这是ivy:resolve 和ivy:retrieve 发生的地方),它依次致电setup-ivy

标签: java configuration build ivy


【解决方案1】:

自定义 ivysettings.xml 文件的默认位置在 ivy.xml 文件旁边。

另一种选择是使用以下任务之一来明确说明要使用的 ivy 设置文件:

【讨论】:

  • 感谢@Mark O'Connor (+1) - 但我已经让 Ivy 从本地 Artifactory 实例中提取 Ivy 库了。我已正确配置常春藤设置并指向~/ivy/ivy-settings.xml。我将在几分钟内用我的 Ivy 设置任务和 Ivy 设置文件更新我的答案。有什么想法吗?
  • 我用我的 Ivy 设置任务和ivy-settings.xml 文件更新了我的原始帖子。使用当前设置,我可以在 ivy.xml 文件中指定 myapp 的依赖项,并将它们从我的本地 Artifactory 服务器中拉下来。我现在需要将 myapp-0.2.0.jar 发布到同一台 Artifactory 服务器,并希望使用 ivy:buildnumber 为我管理版本号。
猜你喜欢
  • 2012-11-30
  • 2012-06-18
  • 2018-07-07
  • 2011-02-25
  • 2011-04-12
  • 2010-12-30
  • 2018-01-06
  • 1970-01-01
  • 2013-01-01
相关资源
最近更新 更多