1

我正在使用 Ant/Ivy 的大型构建系统中工作。我尝试使用使用 ivy:publish 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 的新手,但我认为我了解了它的工作原理。我找不到这个错误的确切含义,所以如果有人可以帮助或指出我的解释,我想我可以从那里解决这个问题。

蚂蚁目标

<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>

谢谢。

4

2 回答 2

3

感谢所有的建议。原来是一个我没有寻找的简单解决方案。

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

我正在回答这个问题,以便以后可能对某人有所帮助。

谢谢。

于 2013-09-03T20:48:16.470 回答
0

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

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

我实际上产生了两个pom with each build. One ispom.xml and the other ispom-snapshot.xml`。我们在每次构建时部署快照,因此其他开发人员可以使用最新的 jar,而不是官方部署的 jar。如果您有兴趣,我已将整个内容放在github中。

我见过的唯一体面的 Ant/Ivy 文档是 Steve Loughram 的 Manning 的Ant in Action。如果不是因为这样,我可能永远不会尝试用 Ivy 尝试 Ant。Apache 的在线 Ant/Ivy 文档非常糟糕。

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

正如我所说,我们使用 Maven 存储库作为我们的站点存储库,然后使用 Maven 将 jar 实际部署到存储库。我只是发现这样做比弄清楚如何在纯常春藤中做到这一点要容易得多。此外,这也意味着我们的 Maven 项目也可以使用我们 Ant/Ivy 项目中的 jar。

于 2013-09-02T11:01:26.517 回答