首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何排除特定范围的依赖关系?

如何排除特定范围的依赖关系?
EN

Stack Overflow用户
提问于 2012-11-26 20:20:25
回答 3查看 8.1K关注 0票数 9

我的pom中有两个依赖项,名为A和B。A和B都依赖于工件C(Cassandra)。A和B使用C的不同版本。依赖性A是工件astyanax。

我想保留B附带的C的版本,我在A (Astyanax)中为C添加了一个排除。

不幸的是,我希望B的范围是‘测试’。这意味着在A中排除,C将不包括在测试范围之外。

我怎么解决这个问题?排除是否只适用于某一特定范围?或者,我是否可以指定用于传递依赖项的版本?

示例:

下面是我的pom的样子:

人工制品A (astyanax),不依赖于人工制品C(称为cassandra)

代码语言:javascript
复制
    <dependency>
        <groupId>com.netflix.astyanax</groupId>
        <artifactId>astyanax</artifactId>
        <version>1.0.4</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.cassandra</groupId>
                <artifactId>cassandra-all</artifactId>
            </exclusion>
        </exclusions>  
    </dependency>
    <dependency>
        <groupId>org.cassandraunit</groupId>
        <artifactId>cassandra-unit</artifactId>
        <version>1.1.1.1</version>
        <scope>test</scope>
    </dependency>

因此,具体而言:当我在测试范围之外运行代码,并且仍然只保留cassandraunit测试的范围时,我如何包括cassandra?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-29 22:11:18

如果我的问题不够清楚,我很抱歉。我解决这个问题的方式一点也不难:

  • 我在pom中为C添加了一个单独的依赖项
  • 我把C排除在A中

具体而言,我刚才补充说:

代码语言:javascript
复制
    <dependency>
        <groupId>org.apache.cassandra</groupId>
        <artifactId>cassandra-all</artifactId>
        <version>1.1.5</version>
    </dependency>

以及运行时缺少的下列依赖项,否则。

代码语言:javascript
复制
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>
票数 6
EN

Stack Overflow用户

发布于 2012-11-27 09:29:48

我不确定我理解了所有的东西,但无论如何,你应该能够通过配置文件来实现这一点。

在pom中,创建一个配置文件A,其中添加依赖项A并排除B,以及配置文件B,在该配置文件中,您将有一个依赖项而不包含A。

在运行时,取决于您所选择的配置文件中的哪一个,您将包含其中一个或另一个。

HIH

票数 1
EN

Stack Overflow用户

发布于 2015-12-07 18:59:02

因此,具体而言:当我在测试范围之外运行代码,并且仍然只保留cassandraunit测试的范围时,我如何包括cassandra?

使用Maven POM配置surefire-maven-plugin改变你的类路径.

如果您只希望在运行测试时将cassandra-all依赖项从类路径中移除,那么下面的POM片段将使问题变得棘手:

代码语言:javascript
复制
<build>
  <!-- ... -->

  <plugins>
    <!-- ... -->

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <classpathDependencyExcludes>
          <classpathDependencyExcludes>
            org.apache.cassandra:cassandra-all
          </classpathDependencyExcludes>
        </classpathDependencyExcludes>
      </configuration>
    </plugin>
  </plugins>
</build>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13572502

复制
相关文章

相似问题

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