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

使用名称空间时的Ivy makePom依赖项

轩辕翰
2023-03-14

我正在使用pom常春藤任务来生成一个Pom文件,以便发布到伪像。除了一个问题之外,这非常有效。由于命名空间与我们的 Ivy 配置一起使用,因此 pom 文件中的依赖项不是原始的 maven 组 Id/工件 Id,而是命名空间派生的名称。这会导致使用此 pom 的 maven 项目在解析依赖项时失败。

例如:

在 ivy.xml 文件中,我们将具有如下依赖项:

<dependency 
  org="org.apache.commons" 
  name="commons-configuration" 
  rev="1.6" 
  conf="compile->compile(*),master(*);runtime->runtime(*)" />

ivysettings.xml中有以下ivy名称空间规则

<rule>
  <fromsystem>
    <src org="org.apache.commons" module="(commons-configuration)" />
  </fromsystem>
  <tosystem>
    <src org="commons-.+" module="commons-.+" />
    <dest org="org.apache.commons" module="$m0" />
  </tosystem>
</rule>

这意味着在Maven存储库中,org =“commons-configuration”和module =“commons-configuration”。

当我调用makePom时,生成的依赖关系将是:

<dependencies>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-configuration</artifactId>
      <version>1.6</version>
      <scope>runtime</scope>
    </dependency>
</dependencies>

这是存储库中一个未知的工件,因为它被存储为共享资源配置:共享资源配置。

我发现解决这个问题的唯一方法是在ant中生成pom,然后在发布之前跨pom运行一系列ant替换regexp任务步骤。虽然它有效,但它似乎是一种非常复杂的修复pom的方法,我想知道是否有人遇到过这种情况,以及他们是如何解决这个问题的。

共有1个答案

赏梓
2023-03-14

你对这个问题的解决方案是合理的,我不确定是否有更好的方法。它确实对常春藤名称空间的使用提出了质疑。。。

显然,makepom任务不知道名称空间。除了希望避免编辑ivy.xml之外,您有使用它们的好理由吗?

我个人建议不要使用它们,它使故障排除更加复杂,并且同一依赖项很少位于同一名称下的不同存储库中。可以说它们是两个不同的依赖关系:-)我有兴趣了解更多信息,这是我个人从未找到用例的功能。

如果问题是重新生成ivy文件以匹配Maven Central模块,我可以建议以下groovy项目:

https://github.com/myspotontheweb/ant2ivy

 类似资料:
  • 问题内容: 我在命名空间和语句上遇到了一些麻烦。 我有三个文件:,和。 我正在尝试使用相对路径进行此操作,因此已将其放在所有类中: 在我的圈子课程中,我有以下内容: 如果使用这些语句,我不会出错。如果我尝试以下语句,则会得到: 致命错误:在第8行的/Users/shawn/Documents/work/sites/workspace/shape/Circle.php中找不到类’Shape \ Sh

  • 在OpenFOAM中,存在一个函数,其名称为exp,表示数学中的幂操作。同时,C++本身也可以进行这个计算,并且函数名称也为exp。这会导致调用的时候,编译器并不知道应该调用OpenFOAM的exp还是C++本身的exp。一种方法是将其中一个exp函数进行改名,比如将OpenFOAM中的exp改成expFoam。但还有更简单的方式。 名称空间专门用于解决上面的问题,它可作为附加信息来区分不同库中相

  • 我在Eclipse中使用leiningen。我似乎无法加载clj时间库。 这是我的项目。clj: 我点击了莱宁根- 当我尝试从repl或在命名空间中使用clj-time时,我得到了一个未找到的命名空间excpetion。例如,如果我在repl:(使用'clj-time.core)中键入这个,我得到:异常命名空间'clj-time.core'未找到clojure.core/load-lib(core

  • 目前,我们有一个使用代码欺骗2.0.16构建的大型接受套件。我们想升级到代码欺骗2.2.5。然而,在安装了Codec0019 2.2.5(via phar)之后,我们根本无法运行我们的测试套件。 我们收到的错误是(底部的其他详细信息): 无法找到并加载[Codeception\Exception\ConfigurationException]模块WebHelper 显然,新版本的加载更改会影响我们

  • 在Jenkinsgroovy脚本中,我尝试使用以下内容下载依赖项: 我有一个 /home/jenkins/.groovy/grapeConfig.xml文件如下: 常春藤-1.16.1。我试图获取的模块的xml: 所以我只是想抓住这个工件:myorg-suitecreator-1.16.1。罐子 当我在Jenkins运行我的groovy脚本时,我得到以下错误: 2019.07.09 18:06:1

  • 问题内容: 我目前正在尝试Django。我在urls.py中的一个参数中使用了参数。当我运行服务器并尝试浏览时,出现此错误。 这些是我的urls.py文件: 和 我如何通过错误消息中所述的? 问题答案: 检查文档是否包含在此处。 您所做的不是传递参数包括的可接受方法。您可以这样做: