【问题标题】:Trying to convert ivy artifacts into maven - missing artifact exception for the pom, even though it is there试图将 ivy 工件转换为 maven - pom 缺少工件异常,即使它在那里
【发布时间】:2013-01-27 00:21:52
【问题描述】:

不确定我是否以正确的方式进行此操作,但我有一些工件正在尝试使用 ivy ant 任务转换为 maven 并推送到我的 maven 存储库中。

有问题的组件是 mystuff.services.common。

首先我制作 pom...

    <ivy:makepom ivyfile="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/ivy-mystuff.services.common.xml" pomfile="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/poms/mystuff.services.common.pom">
        <mapping conf="default" scope="compile"/>
        <mapping conf="runtime" scope="runtime"/>
    </ivy:makepom>

然后有点骇人听闻 - 我使用 xml 任务在 ivy 文件中插入了一个工件元素。这工作正常...

    <xmltask source="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/ivy-${resolved.revision}.xml" dest="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/ivy-${resolved.revision}.xml">
        <insert path="/ivy-module/publications" >
            <![CDATA[
               <artifact name="mystuff.services.common" type="pom"/>
            ]]>
        </insert>
    </xmltask>

然后我根据我看到的有关如何执行此操作的各种文档解决/交付/发布。

    <ivy:resolve file="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/ivy-${resolved.revision}.xml"/>
    <!--<echoproperties/>-->
    <ivy:deliver conf="*" delivertarget="recursive-deliver"/>
    <ivy:publish resolver="myrepo-publish" publishivy="false" overwrite="true">
        <artifacts pattern="lib/myorg/[module]/[type]s/[artifact].[ext]"/>
    </ivy:publish>

我得到的错误:

build.xml:235: impossible to publish artifacts for
  myorg#mystuff.services.common;1.0.1: java.io.IOException: missing artifact
  myorg#mystuff.services.common;1.0.1!mystuff.services.common.pom

如果我从 ivy 文件中的工件中省略 pom,其他工件就会正常发布。

我做错了什么?

这是 ivy 文件的样子插入工件的 pom 条目后

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../../ivy-doc.xsl"?>
<ivy-module version="1.0">

  <info organisation="myorg" module="mystuff.services.common" revision="1.0.1" status="integration" publication="20130206204156"/>

  <configurations>
    <conf name="default"/>
    <conf name="compile" extends="default"/>
  </configurations>

  <publications>
    <artifact name="services.common" type="jar" conf="compile"/>
    <artifact name="services.common~test" type="jar" conf="compile"/>

    <artifact name="services.common" type="javadoc-zip" ext="zip" conf="compile"/>
    <artifact name="services.common~test" type="javadoc-zip" ext="zip" conf="compile"/>

    <artifact name="services.common" type="src-zip" ext="zip" conf="compile"/>
    <artifact name="services.common~test" type="src-zip" ext="zip" conf="compile"/>

    <artifact name="com.myorg.mystuffservices.common" type="osgi-module" ext="jar" conf="compile"/>
    <artifact name="services.common" type="pom"/>
  </publications>

  <dependencies>
    <dependency org="org.testng" name="testng" rev="5.11" conf="compile->compile-15"/>
  </dependencies>

</ivy-module>

【问题讨论】:

    标签: java maven ant ivy pom.xml


    【解决方案1】:

    您的发布没有找到由您的“makepom”任务生成的 pom 的工件模式。

    要么更改位置,要么将额外的工件标签添加到您的发布任务:

    <ivy:publish resolver="myrepo-publish" publishivy="false" overwrite="true">
        <artifacts pattern="lib/myorg/[module]/[type]s/[artifact].[ext]"/>
        <artifacts pattern="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/poms/mystuff.services.common.pom"/>
    </ivy:publish>
    

    我也不明白你为什么要在 ivy 文件中插入 POM 条目。为什么不直接在出版物部分列出?

    详细示例见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-04
      • 2013-07-12
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 2012-11-21
      • 2016-09-13
      相关资源
      最近更新 更多