【问题标题】:Ivy does not publish signature (.asc) filesIvy 不发布签名 (.asc) 文件
【发布时间】:2018-07-06 00:21:14
【问题描述】:

我有一个目录准备好与这些文件一起发布:

myapp-1.0-bin.jar
myapp-1.0-bin.jar.asc
myapp-1.0-javadoc.jar
myapp-1.0-javadoc.jar.asc
myapp-1.0-pom.pom
myapp-1.0-pom.pom.asc
myapp-1.0-sources.jar
myapp-1.0-sources.jar.asc

对应的ivy.xml publications部分是:

<publications>
    <artifact name="myapp" type="pom" ext="pom" conf="default" />
    <artifact name="myapp" type="bin" ext="jar" conf="default" />
    <artifact name="myapp" type="sources" ext="jar" conf="sources" m:classifier="sources" />
    <artifact name="myapp" type="javadoc" ext="jar" conf="javadoc" m:classifier="javadoc" />
    <!-- The following lines have to be removed to publish correctly WITHOUT .asc files -->
    <artifact name="myapp" type="pom.asc" ext="pom.asc" conf="default"/>
    <artifact name="myapp" type="bin.asc" ext="jar.asc" conf="default"/>
    <artifact name="myapp" type="sources.asc" ext="jar.asc" conf="default" m:classifier="sources" />
    <artifact name="myapp" type="javadoc.asc" ext="jar.asc" conf="default" m:classifier="javadoc"/>
</publications>

ant发布任务是:

<target name="ivyPublish-local-m2">
        <ivy:resolve />
        <ivy:publish resolver="local-m2-publish" pubrevision="${ivy.revision}" overwrite="true" publishivy="false">
            <artifacts pattern="${dist.dir}/[artifact]-[revision]-[type].[ext]" />
        </ivy:publish>
    </target>

这个任务应该发布到本地目录,只是为了测试。 问题是以下错误信息:

impossible to publish artifacts for com.myorg#myapp;1.0: java.io.IOException: missing artifact com.myorg#myapp;1.0!myapp.pom.asc

如果我删除 ivy.xml 中注释后的行,则发布继续,但目标文件夹的内容是:

myapp-1.0.pom
myapp-1.0.pom.md5
myapp-1.0.pom.sha1
myapp-1.0.jar
myapp-1.0.jar.md5
myapp-1.0.jar.sha1
myapp-1.0-javadoc.jar
myapp-1.0-javadoc.jar.md5
myapp-1.0-javadoc.jar.sha1
myapp-1.0-sources.jar
myapp-1.0-sources.jar.md5
myapp-1.0-sources.jar.sha1

似乎 -bin 和 -pom 类型已从名称中删除(还不错),但没有发布相应的 .asc 文件。 我还尝试将工件模式更改为:

<artifacts pattern="${dist.dir}/[artifact]-[revision]-[type].[ext](.asc)" />

但没有成功。 问题是:

  • 如何发布 .asc 文件?
  • 我能否像使用 -pom 和 -bin 一样在不更改名称的情况下发布文件?

【问题讨论】:

  • 您的 typeext 值似乎有些重叠。例如,您的 pom asc 条目将“pom.asc”设置为两者。这意味着模式[artifact]-[revision]-[type].[ext] 将解析为“myapp-1.0-pom.asc.pom.asc”。另外,我建议不要在文件名中添加“pom”和“bin”来表示类型,因为这违反了 Maven 标准。

标签: ant repository publish ivy sonatype


【解决方案1】:

我按照 CAustin 的建议对我的工件进行了标准化(没有“-bin”和“-pom”)。现在他们是:

myapp-1.0.jar
myapp-1.0.jar.asc
myapp-1.0-javadoc.jar
myapp-1.0-javadoc.jar.asc
myapp-1.0.pom
myapp-1.0.pom.asc
myapp-1.0-sources.jar
myapp-1.0-sources.jar.asc

使用以下 ivy.xml 出版物部分:

<publications>
        <artifact type="pom" ext="pom" conf="default" /> 
        <artifact type="jar" ext="jar" conf="default" />
        <artifact type="sources" ext="jar" conf="sources" m:classifier="sources" />
        <artifact type="javadoc" ext="jar" conf="javadoc" m:classifier="javadoc" />

        <artifact type="pom.asc" ext="pom.asc" conf="default" />
        <artifact type="jar.asc" ext="jar.asc" conf="default" />
        <artifact type="jar.asc" ext="jar.asc" conf="sources" m:classifier="sources" />
        <artifact type="jar.asc" ext="jar.asc" conf="javadoc" m:classifier="javadoc" />
    </publications>

并通过 build.xml 调用:

<ivy:publish resolver="local-m2-publish" pubrevision="${ivy.revision}" overwrite="true" publishivy="false">
            <artifacts pattern="${dist.dir}/[artifact]-[revision](-[classifier]).[ext]" />
        </ivy:publish>

一切正常!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2016-09-03
    • 2016-02-29
    相关资源
    最近更新 更多