我在一个使用Ant/Ivy的大型构建系统中工作。我尝试使用一个预定义的蚂蚁任务,该任务使用ivy:publish-ant任务,并得到以下错误:
无法为com.company.project1.proj1#MySupportJar发布工件;working@server1:java.io.FileNotFoundException:/path_to/ivy repository/company.project1.proj1/MySupportJar/5.1.3.part/MySupportJar-5.1.3.jar(没有这样的文件或目录)
错误消息中的目录一直存在到版本号部分(5.1.3.part)。
我是常春藤的新手,但我想我了解它的基本工作原理。我找不到这个错误的确切含义,所以如果有人能帮我或给我一个解释,我想我可以从那里解决这个问题。
蚂蚁目标
<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>
Ivy文件片段
<publications>
<artifact name="MySupportJar" type="jar" conf="distro" />
<artifact name="MySupportJar-source" type="source" ext="jar" conf="docs" />
</publications>
谢谢。
感谢您的建议。事实证明,这是一个我并不想要的简单解决方案。
问题出在/path_to/ivy repository/company.project1上。我没有书面许可。.part文件是Ivy编写的临时文件。Ivy无法写入临时文件,所以当它读取文件时,却找不到它
我回答这个问题是为了以后对别人有所帮助。
谢谢。
我也是Ant和Ivy的新手。我所做的是将本地Maven存储库(Artifactory)与Jenkins作为一个持续集成服务器进行组合。当我们构建一个jar时,我也会用它生成Maven pom.xml
。然后,我使用mvn deploy:file
命令将所需的构建部署到我们的Maven存储库中。
开发人员通过Jenkins的Promoted Build插件手动将jar部署到我们的Maven存储库中。开发人员选择要部署到Maven的构建,然后几乎按下一个按钮,就会部署该构建。
我实际上生成了两个pom with each build. One is
pom.xml and the other is
pom snapshot.xml`。我们在每次构建时都部署快照,这样其他开发人员就可以使用最新的jar,而不是正式部署的jar。如果你感兴趣的话,我已经把整件事都放在github里了。
我看到的唯一像样的蚂蚁/常春藤文档是Steve Loughram的Manning的《蚂蚁在行动》。如果不是这样的话,我可能永远都不会和艾薇一起尝试蚂蚁。Apache的在线Ant/Ivy文档简直太糟糕了。
我看过你的东西。我怀疑您的ivy-settings.xml文件可能有问题。在某个地方,它正在获取part
字符串作为发布文件的有效位置。否则,我不知道。
正如我所说,我们为站点存储库使用Maven存储库,然后使用Maven将jar实际部署到存储库中。我只是发现这样做比在纯常春藤里想办法做容易得多。此外,这也意味着我们的Maven项目也可以使用我们的Ant/Ivy项目中的jar。