在ivysettings.xml中,我有以下工件的解析器:
<resolvers>
<url name="shared" m2compatible="true">
<artifact pattern="${ivy.shared.default.root}/[orgPath]/[module]/[revision]/[module]-[revision]-[conf].[ext]" />
</url>
</resolvers>
我的ivy.xml文件有两个配置和两个出版物:
<configurations>
<conf name="debug"/>
<conf name="release"/>
</configurations>
<publications>
<artifact name="project-debug" type="zip" conf="debug" ext="zip" />
<artifact name="project-release" type="zip" conf="release" ext="zip"/>
</publications>
在build.xml中我使用ivy:publish:
<target name="publish" "description="--> publish the project in the ivy repository">
<property name="revision" value="${project.revision}"/>
<ivy:publish artifactspattern="${build.dir}/[artifact].[ext]"
resolver="shared"
pubrevision="${revision}"
/>
</target>
已发布工件的文件名不是我所期望的:
project-1.0-default.zip
我希望有两个文件:
project-1.0-release.zip
project-1.0-debug.zip
请注意,我不能使用以下模式:
${ivy.shared.default.root}/[orgPath]/[module]/[revision]/[artifact]-[revision].[ext]
那是因为我必须使用的存储库(Archiva)要求工件的形式为[module] - [revision] -...否则我们会得到这样的例外:
Not a valid artifact path in a Maven 2 repository, filename 'project-debug-1.0.zip' doesn't contain version '1.0'.
答案 0 :(得分:0)
再看看你的解析器:
<resolvers>
<url....>
<artifact pattern="....../[module]-[revision]-[conf].[ext]" />
</url>
</resolvers>
两个已发布的文物将解析为相同的名称(因为它们共享相同的模块和相同的发布配置“默认”)。
请尝试使用以下神工模式:
<artifact pattern="....../[artifact]-[revision].[ext]" />
这应该产生以下发布的文件:
project-debug-1.0.zip
project-release-1.0.zip
如果要为文件名添加额外的可选属性,请考虑使用extra attributes,例如:
您的构建产生了多少个文件? artifactpattern 参数表明只有一个文件?
<ivy:publish artifactspattern="${build.dir}/[artifact].[ext]"
这可以解释为什么发布单个文件。
有关如何使用常春藤发布多个人工制品的示例: