1

我正在学习 Ivy (http://ant.apache.org/ivy/) 并将其集成为我们构建过程的一部分。进展顺利,但我被 Ivy 发布任务困住了。具体来说,我想使用以下模式(包括当前配置的名称)发布到本地存储库:

${ivy.local.default.root}/[organisation]/[module]/[revision]/[type]s/[conf]/[artifact].[ext]

所以我设置了我的自定义解析器:

<filesystem name="modifiedLocalRepo">
    <ivy pattern="${ivy.local.default.root}/[organisation]/[module]/[revision]/[type]s/[conf]/[artifact].[ext]" />
    <artifact pattern="${ivy.local.default.root}/[organisation]/[module]/[revision]/[type]s/[conf]/[artifact].[ext]" />
</filesystem>

并配置了发布任务:

<ivy:publish 
    settingsRef="ivy.ext.settings.custom" <!--Location of definition of modifiedLocalRepo-->
    resolver="modifiedLocalRepo" 
    artifactspattern="bin/Debug/[module].[ext]" 
    pubrevision="1.1-Test" 
    overwrite="true"
    conf="primary"
/>

并在 ivy.xml 文件中定义 conf:

<info organisation="Mine" module="Dependency"/>
<configurations defaultconf="primary"> <!--Don't think defaultconf should be necessary-->
    <conf name="primary"/>
</configurations>
<publications>
    <artifact name="Dependency" ext="dll" type="bin" conf="primary"/>
    <artifact name="Dependency" ext="pdb" type="bin" conf="primary"/>
</publications>

我已经完成了流程、配置、解析、项目构建和发布的工件(使用我上面的自定义解析器)。但是 [conf] 令牌总是解析为“默认”。所以发布的目录结构如下:

\.ivy2\local\Mine\Dependency\1.1-Test\bins\default\

而不是结构

\.ivy2\local\Mine\Dependency\1.1-Test\bins\primary\

我一直在修改它,设置 conf 值、defaultconf 值等。在它们有效的任何地方,但它始终是“默认值”。

我正在使用 ant 进行构建,并在调试模式 (-d) 下运行,检查了输出并发现没有任何用处。我查看了 <echoproperties\> 的输出,发现没有任何用处。我通读了 Ivy 文档,只发现在检索和报告输出中使用 [conf] 作为令牌。

如果有用的话,我可以附上我用来进行有限测试构建的完整 xml 文件。

[conf] 令牌在 Ivy 发布的工件模式中是否有效/受尊重?如果是这样,我错过了什么?谢谢!

更新: 正在使用 Ivy 2.3.0-rc2 并决定尝试回滚并使用 Ivy 2.0.0。同样的问题。

4

1 回答 1

0

看看我在github上的 Ivy 项目。我进行了设置,因此您可以轻松地将其添加到现有的 Ant 项目中。

我们使用一个 Maven 存储库,所以我设置它来创建一个pom.xml,然后使用mvn deploy:deploy-file它来将它部署回 Maven 存储库。我们使用 Jenkins 进行构建,所以我们使用 Jenkins 来运行mvn deploy-file部署。我想我们可以使用<ivy:publish>,但从未真正尝试过。

于 2012-12-06T19:57:04.417 回答