【问题标题】:Issues using ivy:publish task使用常春藤的问题:发布任务
【发布时间】:2012-01-08 10:14:34
【问题描述】:

我正在尝试使用 ivy:publish 将我构建的 jar 发布到 .ivy 存储库,但出现错误。我很确定我没有正确使用它,所以我希望有人能指出我正确的方向。

项目结构是这样的:

root--|
      |--src
      |--build
      |      |
      |      |--someorganisation-commonlib-1.0.0.jar
      |
      |--ivy.xml
      |--build.xml

build.xml 看起来像这样:

<target name="publish"> 
        <ivy-publish organisation="someorganisation" resolver="local" module="commonlib" revision="1.0.0">
               <artifacts pattern="build/[organisation]-[module](-[revision])(-[type]).[ext]" />
        </ivy-publish>  
    </target>

ivy.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
    <ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">

        <info
            organisation="someorganisation"
            module="commonlib"
            status="integration">
        </info>

    <dependencies>  
            <dependency org="com.thoughtworks.xstream" name="xstream" rev="1.3.1" transitive="false"/>
            <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" transitive="false"/>
            <dependency org="org.slf4j" name="slf4j-jdk14" rev="1.6.1" transitive="false"/>
            <dependency org="joda-time" name="joda-time" rev="1.6.2" transitive="false"/>
        </dependencies>

    </ivy-module>

当我运行 build.xml 时,我收到以下错误:

 C:\workspaces\wkspc\someproject\build.xml:8: someorganization#commonlib;1.0.0: java.lang.IllegalStateException: ivy file not found in cache for someorganization#commonlib;1.0.0: please resolve dependencies before delivering (C:\Documents and Settings\someuser\.ivy2\cache\resolved-someorganization-commonlib-1.0.0.xml)

【问题讨论】:

    标签: ivy


    【解决方案1】:

    您在 ivy 文件中忘记了 publications 部分。

    <ivy-module version="2.0">
        <info organisation="someorganisation" module="commonlib"/>
    
        <publications>
            <artifact name="commonlib" type="jar"/>
        </publications>
    
        <dependencies>  
            <dependency org="com.thoughtworks.xstream" name="xstream" rev="1.3.1" transitive="false"/>
            <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" transitive="false"/>
            <dependency org="org.slf4j" name="slf4j-jdk14" rev="1.6.1" transitive="false"/>
            <dependency org="joda-time" name="joda-time" rev="1.6.2" transitive="false"/>
        </dependencies>    
    </ivy-module>
    

    statusrevision (pubrevision) 字段可以由publish 任务指定如下:

       <ivy:publish resolver="${publish.resolver}" pubrevision="${publish.revision}" status="${publish.status}">
            <artifacts pattern="${build.dir}/[organisation]-[artifact].[ext]"/>
        </ivy:publish>
    

    注 1:

    生成名称中没有修订号的 jar 文件会更简单。只需让 ivy 的神器模式拾取 jar 文件即可。

    注2:

    您将需要在构建的某个阶段进行 ivy 解析,否则无法处理 ivy 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-11
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 2018-07-07
      相关资源
      最近更新 更多