在常春藤:发布者默认的deliveryivypattern是$ {ivy.distrib.dir} / [type] s / [artifact] - [revision]( - [classifier])。[ext]
我尝试在我的ivy.xml中设置分类器,方法是在元素中添加属性e:classifier =“”。
但[分类器]没有设定? 当ivy:publish在我的build.xml文件中运行时,它似乎是空的,因此不包含在文件名模式中。
答案 0 :(得分:6)
我想我已经找到了你的问题。
要明确的是配置的解析程序确定存储库文件名而不是发布任务。这是我的示例,它在工件和常春藤文件名模式中使用了两个额外的属性问候语和作者:
<ivysettings>
<property name="repo.dir" value="${ivy.basedir}/build/repo"/>
<property name="ivy.checksums" value=""/> <!-- Suppress the generation of checksums -->
<settings defaultResolver="internal"/>
<resolvers>
<filesystem name="internal">
<ivy pattern="${repo.dir}/[module]/[author]-ivy(-[greeting])-[revision].xml" />
<artifact pattern="${repo.dir}/[module]/[author]-[artifact]-[greeting]-[revision].[ext]" />
</filesystem>
</resolvers>
</ivysettings>
额外属性的值由 ivy.xml 文件确定:
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="myorg" module="hello" e:author="Mark"/>
<publications>
<artifact name="English" ext="txt" type="doc" e:greeting="hello"/>
<artifact name="Irish" ext="txt" type="doc" e:greeting="dia_dhuit"/>
<artifact name="Spanish" ext="txt" type="doc" e:greeting="Hola"/>
</publications>
</ivy-module>
当我发布文件时,肯定会出现问候语和作者标签的值:
$ find build -type f
build/repo/hello/Mark-English-hello-1.0.txt
build/repo/hello/Mark-Irish-dia_dhuit-1.0.txt
build/repo/hello/Mark-Spanish-Hola-1.0.txt
build/repo/hello/Mark-ivy-1.0.xml
答案 1 :(得分:2)
我遇到了问题
不允许属性分类器出现在元素'artifact'
中
我只是在声明中添加了“额外”命名空间,并且能够使用分类器。
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
xmlns:e="http://ant.apache.org/ivy/extra">
<dependency org="orphans" name="vaadin-timeline-cval" rev="2.0">
<artifact name="vaadin-timeline-cval" e:classifier="1.3.1" ext="jar"/>
</dependency>
答案 2 :(得分:1)
我相信你想要这样的模式。如果没有定义问候语,它将被省略。
[作者] - [工件]( - [问候]) - [修改] [EXT]
答案 3 :(得分:1)
我遇到了同样的问题,我们找到了一种获取额外属性的方法。
我在ivysettings.xml中的示例看起来像......
<resolvers>
<filesystem name="internal">
<ivy pattern="${repo.dir}/[module]/[author]-ivy(-[greeting])-[revision].xml" />
<artifact pattern="${repo.dir}/[module]/[author]-[artifact]-[greeting]-[revision].[ext]" />
</filesystem>
并在您的ivy.xml文件中我提出以下内容:请注意,我希望每次发布内容时都将问候值设置为动态值( $ {someValue} )
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="myorg" module="hello" e:author="Mark"/>
<publications>
<artifact name="English" ext="txt" type="doc" e:greeting="${someValue}"/>
</publications>
这是诀窍的来源 - &gt;在我调用ivy:publish函数的构建文件中,必须将以下属性设置为true( forcedeliver )
<ivy:publish resolver="@{ivy.resolver}"
pubrevision="@{publish.revision}"
status="@{status}"
forcedeliver="true"
overwrite="@{overwrite}"
update="true" />
就是这样