当前位置: 首页 > 知识库问答 >
问题:

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

桂宏旷
2023-03-14

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

在构建中.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个答案

徐高韵
2023-03-14

再看看您的解析器:

<resolvers>
  <url....>
    <artifact pattern="....../[module]-[revision]-[conf].[ext]" />
  </url>
</resolvers>

这两个发布的工件将解析为相同的名称(因为它们共享相同的模块和相同的发布配置“默认”)。

请尝试以下 arifact 模式:

<artifact pattern="....../[artifact]-[revision].[ext]" />

这将生成以下已发布的文件:

project-debug-1.0.zip
project-release-1.0.zip

如果要向文件名添加额外的可选属性,请考虑使用额外的属性,例如:

  • 尝试在工件模式中使用可选令牌时出错
  • 常春藤:发布如何使用[分类器]属性

您的构建生成多少个文件?工件模式参数表明只有一个文件?

<ivy:publish artifactspattern="${build.dir}/[artifact].[ext]"

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

有关如何使用 ivy 发布多个工件的示例:

  • 本地存储库的常春藤教程好吗?
  • 如何使用 Ivy 和 Nexus 发布第 3 方工件
 类似资料:
  • 使用apache ivy,我想下载jcs 1.3 jar文件,但我不想要它附带的其他暂时依赖项。我是否可以指定ivy来排除这个特定依赖元素的所有暂时依赖项?或者至少在排除模式中使用通配符? 我查找了Ivy文档,没有找到任何关于如何使用matcher for glob/regex模式排除文件的例子。 以下是我ivy.xml的片段,我想避免排除名称/模块的长列表。

  • 我有一个简单的文件: 其中是我的配置名称,是映射的Maven类型。这被正确解析并给我这些文件: 现在,我必须添加这个依赖项: 它将< code>validation-api作为其依赖项,与我在顶部指定的相同。 艾薇解决了这个问题,给了我这些文件: 但这次没有检索到文件。为什么?我认为这个文件没有冲突……我应该怎么做才能拥有和jar(二进制和源代码)?

  • 我目前正在与apache ivy的conf设置作斗争。也许我会先解释我想实现的目标: 我需要两种配置:编译、运行时 这是我试过的: 但它甚至无法被解析:无法解析ivy文件'...\ivy.xml': 有人能告诉我如何正确地声明conf设置,这样我就可以使用compile或runtime来解析,并获得所有jar,包括可传递的依赖项(在这个示例中,只有ivy的jar)。 使现代化 好的,谢谢你的链接。

  • 我正在尝试使用IVY,并且我已经在springsource工具套件中设置了我的IVY-de。 在尝试构建我的工作空间时,我得到了以下错误。 说明资源路径位置类型类路径发布/导出依赖项C:/Users/user1/.ivy2/cache/jstl/jstl.jars/jstl-1.2.jar无效。项目包含另一个具有相同存档名称的依赖项。Web P/Web类路径依赖关系验证器消息 在这方面,我们非常感

  • 我是艾薇的新手,所以这可能已经被报道过了,但是我知道的还不够多。我的搜索结果是空的,没有找到类似的经历。 因此,当我第一次下拉整个项目并且更新库引用时,我有时会收到未解决的依赖项警告。它似乎在随机库上。 例如,我刚刚在某个项目中添加了Commons-codec-1.9,而工作集中的其他项目使用1.6和1.7。当运行盛大的构建脚本时,突然对于1.6和1.7“配置[is]未找到”: 现在,我不完全确定

  • 问题内容: 我将Ivy用作我的持续集成构建系统的一部分,但是我需要覆盖Ivy的本地缓存区域的默认位置。 问题答案: 尽管上面来自skaffman的答案是正确的,但我发现它比我预期的要多得多的工作! 当我将ivysettings.xml文件添加到项目时,然后我需要重新定义几乎所有内容,因为在此之前默认值一直可以正常工作。 因此,我发现了如何在NAnt脚本中将新的缓存目录添加到嵌入式命令行中… (我的

  • 我项目中的某些开发人员无法成功执行常春藤解析。我们对远程服务器/文件系统使用ivy-ssh解析器。受影响的开发人员通常会成功解决除1或2个依赖项之外的所有依赖项。未能解决的依赖关系是较大的jar(例如:nasa worldwind)。同样,大多数用户能够毫无问题地解决所有依赖项。eclipse项目,常春藤。xml和ivysettings。xml都来自软件repo,在受影响的用户和未受影响的客户之间

  • 我无法使用Apache Ivy解决我的vaadin 7项目。每当我尝试时,它都会显示一个错误框,其中显示 “常春藤解决”遇到了一个问题。某些项目无法解决。 在单击错误框上的“详细信息”按钮时,我得到了以下附加信息 某些项目无法解决无法解决com.example#v7proj;的依赖项;working@User无法解析的依赖项:com.vaadin#vaadin客户端已编译;7.6.2:未找到未解析