我在使用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>
感谢。
答案 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项目中的罐子。