在Ivy中,什么不可能发布工件FileNotFoundException错误意味着什么?

时间:2013-08-30 16:51:13

标签: ant ivy

我在使用Ant / Ivy的大型构建系统中工作。我尝试使用使用常春藤的预定义ant任务:发布ant任务并得到此错误:

无法为com.company.project1.proj1发布工件#MySupportJar; working @ server1:java.io.FileNotFoundException:/path_to/ivy-repository/com.company.project1.proj1/MySupportJar/5.1.3.part /MySupportJar-5.1.3.jar(没有这样的文件或目录)

错误消息中的目录存在于版本号部分(5.1.3.part)。

我是Ivy的新手,但我认为我掌握了它的工作原理。我找不到这个错误的确切含义,所以如果有人可以帮助或指出我的解释,我想我可以从那里解决问题。

Ant目标

<target name="publish-shared" depends="ivyInit, resolve"
        description="Publish to the shared repository">
    <ivy:publish pubrevision="5.1.3"
                 resolver="shared"
                 pubdate="${timestamp}"
                 forcedeliver="true"
                 update="true"
                 conf="distro, docs">
        <artifacts pattern="dist/[artifact].[ext]"/>
    </ivy:publish>
</target>

常春藤文件摘录

<publications>
    <artifact name="MySupportJar" type="jar" conf="distro" />
    <artifact name="MySupportJar-source" type="source" ext="jar" conf="docs" />
</publications>

感谢。

2 个答案:

答案 0 :(得分:3)

感谢所有建议。原来是一个我不想要的简单解决方案。

问题是/path_to/ivy-repository/com.company.project1的权限。我没有写入权限。 .part文件是Ivy编写的临时文件。 Ivy无法编写临时文件,所以当它读取文件时,它找不到它。

我正在回答这个问题,以便以后可以帮助别人。

感谢。

答案 1 :(得分:0)

我对Ivy也很陌生。我所做的是将本地Maven存储库(Artifactory)与Jenkins结合为一个持续集成服务器。当我们构建一个jar时,我也用它生成Maven pom.xml。然后,我使用mvn deploy:file命令将所需的构建部署到我们的Maven存储库。

开发人员通过 Promoted Build 插件手动将jar部署到我们的Maven存储库。开发人员选择要部署到Maven的构建,然后几乎按下按钮,将部署该构建。

我实际上生成了两个poms with each build. One is pom.xml and the other is pom-snapshot.xml`。我们为每个构建部署快照,因此其他开发人员可以使用最新的jar而不是官方部署的jar。如果你感兴趣,我会把整件事放在github

我见过的唯一体面的Ant / Ivy文档是史蒂夫·拉夫拉姆的曼宁Ant in Action。如果不是那样的话,我可能永远都不会尝试使用常春藤。在Apache的在线Ant / Ivy文档非常糟糕。

我看过你的东西。我怀疑你的ivy-settings.xml文件可能存在问题。在某处,它将part字符串作为发布文件的有效位置。否则,我不知道。

正如我所说,我们使用Maven存储库存储 site 存储库,然后使用Maven将jar实际部署到存储库。我发现这样做比在纯常春藤中找出如何做到这一点要容易得多。此外,它还意味着我们的Maven项目也可以使用我们的Ant / Ivy项目中的罐子。