gpt4 book ai didi

java - IvyDE 无法解析 Mule 依赖

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:37 26 4
gpt4 key购买 nike

我正在使用 Apache Ivy 来管理传递依赖。

使用 Maven 是一次非常好的体验,因为如果有任何依赖项在远程目录中不可用或在不同版本中可用,那么 Maven 将有效地管理它们。

但是,在我尝试管理 Mule 依赖项时,Ivy 遇到了这个问题,但 Ivy 很难管理,而 Maven 管理得很好,没有任何问题。

更重要的一点是,我什至不能排除任何依赖,因为我不想排除,但我希望 Ivy 有足够的能力,以便它可以管理所有或任何其他方式,如果有的话。

下面是错误的屏幕截图以及必要的 XML 文件。

enter image description here

ivy.xml

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info
organisation="MyOrganization"
module="TestForIvySupport"
status="integration">
</info>

<dependencies>
<dependency org="org.mule" name="mule-core" rev="3.6.0"/>
</dependencies>

ivysettings.xml

<settings defaultResolver="chained"/>
<resolvers>
<chain name="chained">
<url name="custom-repo">
<ivy pattern="https://repository.mulesoft.org/nexus/content/groups/public/org/[organisation]/[module]/[revision]/ivy-[revision].xml"/>
<artifact pattern="https://repository.mulesoft.org/nexus/content/groups/public/org/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
</url>
<ibiblio name="ibiblio" m2compatible="true" root="http://mirrors.ibiblio.org/maven2/"/>
<ibiblio name="ibiblio1" m2compatible="true" root="http://repo1.maven.org/maven2/"/>
</chain>
</resolvers>

build.xml

<project name="test ivy" default="test" xmlns:ivy="antlib:org.apache.ivy.ant">
<target name="test" description="Test ivy installation">
<ivy:settings file="ivysettings.xml"/>
<ivy:retrieve sync="false" pattern="myfolder/[artifact]-[revision].[ext]"/>
</target>

最佳答案

使用你的例子我有一个不同的错误:

[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: UNRESOLVED DEPENDENCIES ::
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: org.mule.mvel#mule-mvel2;2.1.9-MULE-005: not found
[ivy:resolve] :: org.mule.common#mule-common;3.6.0: not found
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::

我最终让它工作了,但发现了一个损坏的 POM。

工作示例

Ivy .xml

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info
organisation="MyOrganization"
module="TestForIvySupport"
status="integration">
</info>

<dependencies>
<!-- Exclude the broken dependency -->
<dependency org="org.mule" name="mule-core" rev="3.6.0" conf="default">
<exclude org="com.github.stephenc.eaio-grabbag" module="grabbag"/>
</dependency>

<!-- Just pull down the jar artifact associated with the module -->
<dependency org="com.github.stephenc.eaio-grabbag" name="grabbag" rev="1.8.1" conf="default">
<artifact name="grabbag" type="jar"/>
</dependency>
</dependencies>

</ivy-module>

注意事项:

  • 与 grabbag 相关联的 POM 已损坏。
  • 解决方法告诉 ivy 忽略 POM,然后我们显式地提取 jar 文件作为第二个依赖项声明。

Ivy 设置.xml

<ivysettings>
<settings defaultResolver="chained"/>
<resolvers>
<chain name="chained" returnFirst="true">
<ibiblio name="central" m2compatible="true"/>
<ibiblio name="mulesoft" m2compatible="true" root="https://repository.mulesoft.org/nexus/content/groups/public"/>
</chain>
</resolvers>
</ivysettings>

注意事项:

  • 简化设置文件以使用 ibiblio 资源仅与两个 Maven 存储库通信:Maven Central 和 Mulesoft 存储库

错误分析

第一个错误分析

我追踪到这是“mule-core”模块的父 pom 的问题。

有一个覆盖依赖项,其中该属性引用 Maven Central 中不存在的“mule-mvel2”模块版本

<properties>
..
<muleMvelVersion>2.1.9-MULE-005</muleMvelVersion>
..
</properties>

<dependency>
<groupId>org.mule.mvel</groupId>
<artifactId>mule-mvel2</artifactId>
<version>${muleMvelVersion}</version>
</dependency>

设法通过添加以下 Mulesoft 存储库来解决此问题。

第二个错误分析

进一步解决这个问题我发现了第二个级联错误:

[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: FAILED DOWNLOADS ::
[ivy:resolve] :: ^ see resolution messages for details ^ ::
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: com.github.stephenc.eaio-grabbag#grabbag;1.8.1!grabbag.non-maven-jar
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::

这个问题更严重,因为它是由错误配置的 POM 文件引起的:

包装已从“jar”默认设置更改

<packaging>non-maven-jar</packaging>

ivy 的变通办法是排除这个损坏的传递依赖项,然后明确地将 jar Artifact 作为 ivy 文件中的第二个依赖项。

我提出了一个github issue与项目。

关于java - IvyDE 无法解析 Mule 依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33865008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com