Maven依赖项排除:相同的artifact-id问题

时间:2014-01-25 13:30:01

标签: apache maven apache-fop

我有一个Apache Cocoon项目,我想将Apache FOP从1.0更新到1.1,以修复外来(非拉丁语)脚本问题,例如希腊语。

我发现FOP 1.1具有Maven依赖性:

<dependency>
  <groupId>org.apache.xmlgraphics</groupId>
  <artifactId>fop</artifactId>
  <version>1.1</version>
</dependency>

错误: 无法在项目X上执行目标:无法解析项目com.X的依赖项:jar:1.0-SNAPSHOT:无法找到org.apache.avalon .framework:avalon-framework-api:jar:http://repo.maven.apache.org/maven2 中的4.2.0被缓存在本地存储库中,在中心的更新间隔过去或强制更新之前,不会重新尝试解析 - &gt ; [帮助1]

我在这个问题上搜索一个解决方案,我发现这个依赖关系已经破坏了一些其他依赖项的链接,FOP 1.1需要调用它们。这些与Avalon框架API 4.2相关联。我在邮件列表中读到,可能尝试使用排除项并调用额外的依赖项工作正常。解决方案是这段代码:

<dependency>
  <groupId>org.apache.xmlgraphics</groupId>
  <artifactId>fop</artifactId>
  <version>1.1</version>
  <exclusions>
    <exclusion>
     <artifactId>avalon-framework-api</artifactId>
     <groupId>org.apache.avalon.framework</groupId>
    </exclusion>
    <exclusion>
     <artifactId>avalon-framework-impl</artifactId>
     <groupId>org.apache.avalon.framework</groupId>
    </exclusion>
  </exclusions>
  </dependency>
  <!-- these two are to correct issues in fop dependency --> 
  <dependency>
   <groupId>avalon-framework</groupId>
   <artifactId>avalon-framework-api</artifactId>
   <version>4.2.0</version>
  </dependency>
  <dependency>
   <groupId>avalon-framework</groupId>
   <artifactId>avalon-framework-impl</artifactId>
   <version>4.2.0</version>
</dependency>

现在编译返回以下 ERROR2: “无法执行目标org.apache.cocoon:cocoon-maven-plugin:1.0.0-M2:准备(准备)项目X :至少有两个ID为'avalon-framework-api'的工件:avalon-framework:avalon-framework-api:jar:4.2.0:compile“。

当然有。排除两个依赖项,破坏它们,其中两个被称为正确的依赖项。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:7)

尚未对此进行测试,但可能不包括org.apache.avalon.framework v4.2.0并包含最新的v4.3.1。如:

    <dependency>
        <groupId>org.apache.xmlgraphics</groupId>
        <artifactId>fop</artifactId>
        <version>1.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.avalon.framework</groupId>
                <artifactId>avalon-framework-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.avalon.framework</groupId>
                <artifactId>avalon-framework-impl</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.avalon.framework</groupId>
        <artifactId>avalon-framework-api</artifactId>
        <version>4.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.avalon.framework</groupId>
        <artifactId>avalon-framework-impl</artifactId>
        <version>4.3.1</version>
    </dependency>