如何在常春藤解析器模式中使用配置

时间:2016-04-29 09:42:37

标签: build ivy

在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'.

1 个答案:

答案 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]"

这可以解释为什么发布单个文件。

有关如何使用常春藤发布多个人工制品的示例: