我正在学习 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。同样的问题。