首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IvyDE无法解决Mule依赖关系

IvyDE无法解决Mule依赖关系
EN

Stack Overflow用户
提问于 2015-11-23 06:38:13
回答 1查看 925关注 0票数 2

我正在使用Apache来管理传递的依赖关系。

使用Maven是一种很好的体验,因为如果有任何依赖关系在远程目录中不可用或可用于不同的版本,那么Maven将有效地管理这些依赖。

然而,在我的例子中,Ivy被困住了,因为我试图管理Mule依赖关系,但是Ivy很难管理它,而Maven却没有任何问题地很好地管理它。

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

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

ivy.xml

代码语言:javascript
复制
<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

代码语言:javascript
复制
<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

代码语言:javascript
复制
<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> 

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-24 22:27:50

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

代码语言:javascript
复制
[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

代码语言:javascript
复制
<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>

备注:

  • 与Grab袋依赖相关的POM被破坏。
  • 工作提示常春藤忽略POM,然后我们显式地将jar文件作为第二个依赖项声明。

ivysettings.xml

代码语言:javascript
复制
<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>

备注:

  • 将设置文件简化为使用Maven资源只与两个Maven存储库对话:Maven Central和Mulesoft存储库

误差分析

第一误差分析

我追踪到了“骡子核心”模块的父级pom的一个问题。

  • http://search.maven.org/#artifactdetails|org.mule|mule|3.6.0|pom

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

代码语言:javascript
复制
<properties>
  ..
  <muleMvelVersion>2.1.9-MULE-005</muleMvelVersion>
  ..
</properties>

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

通过添加以下Mulesoft存储库,设法修复了这个问题。

二次误差分析

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

代码语言:javascript
复制
[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文件引起的:

  • http://search.maven.org/#artifactdetails|com.github.stephenc.eaio-grabbag|grabbag|1.8.1|pom

将打包从"jar“默认值更改为

代码语言:javascript
复制
<packaging>non-maven-jar</packaging>

常春藤的工作是排除这个破损的传递依赖,然后显式地将jar工件作为常春藤文件中的第二个依赖项。

我已经向这个项目提出了一个github问题

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33865008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档