首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven-dependency-plugin不显示测试范围的依赖关系

maven-dependency-plugin不显示测试范围的依赖关系
EN

Stack Overflow用户
提问于 2020-11-26 00:01:56
回答 1查看 51关注 0票数 1

我试图从命令行显示我正在使用maven-dependency-plugin版本3.1.2处理的项目的完整依赖关系树,但是mvn dependency:tree目标(以及来自maven-dependency-plugin的任何其他目标)都没有显示test依赖关系。插件(https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html)的文档指出,默认情况下包含所有作用域,因此不需要使用-Dscope=test (但添加此参数时,输出不会改变)。

我已经用一个干净的.m2存储库运行了这个代码,没有使用settings.xml文件(以确保所有工件都直接来自repo.maven.apache.org)。

我使用maven 3.6.2在linux环境(CentOS 7)和Oracle Java 1.8.0_144上运行

这是我的POM:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sw-eval</groupId>
  <artifactId>cayenne-eval</artifactId>
  <version>1.0.0-SNAPSHOT</version>

  <dependencies>
    <dependency>
      <groupId>org.apache.cayenne</groupId>
      <artifactId>cayenne-server</artifactId>
      <version>4.2.M2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cayenne</groupId>
      <artifactId>cayenne-di</artifactId>
      <version>4.2.M2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cayenne</groupId>
      <artifactId>cayenne-dbsync</artifactId>
      <version>4.2.M2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cayenne</groupId>
      <artifactId>cayenne-client</artifactId>
      <version>4.2.M2</version>
    </dependency>
  </dependencies>

</project>

下面是我从运行命令mvn dependency:tree得到的输出

代码语言:javascript
复制
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< com.sw-eval:cayenne-eval >----------------------
[INFO] Building cayenne-eval 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ cayenne-eval ---
[INFO] com.sw-eval:cayenne-eval:jar:1.0.0-SNAPSHOT
[INFO] +- org.apache.cayenne:cayenne-server:jar:4.2.M2:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] +- org.apache.cayenne:cayenne-di:jar:4.2.M2:compile
[INFO] +- org.apache.cayenne:cayenne-dbsync:jar:4.2.M2:compile
[INFO] |  +- org.apache.cayenne:cayenne-project:jar:4.2.M2:compile
[INFO] |  \- net.java.dev.inflector:inflector:jar:0.7.0:compile
[INFO] \- org.apache.cayenne:cayenne-client:jar:4.2.M2:compile
[INFO]    +- com.caucho:hessian:jar:4.0.63:compile
[INFO]    \- org.apache.cayenne:cayenne-rop-server:jar:4.2.M2:compile
[INFO]       +- org.apache.cayenne:cayenne-web:jar:4.2.M2:compile
[INFO]       \- org.slf4j:slf4j-simple:jar:1.7.25:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.951 s
[INFO] Finished at: 2020-11-25T08:53:17-07:00
[INFO] ------------------------------------------------------------------------

但是,在引用cayenne-server pom时,有许多标记为test的依赖项未在输出中显示(具体而言,以下是cayenne-server的直接依赖项,请参阅https://search.maven.org/artifact/org.apache.cayenne/cayenne-server/4.2.M2/jar):

代码语言:javascript
复制
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.cayenne.build-tools</groupId>
            <artifactId>cayenne-test-utilities</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-mock</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.mockrunner</groupId>
            <artifactId>mockrunner-jdbc</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <!-- this one have old Xerces dependency that clashes with JDK's one -->
                    <groupId>nekohtml</groupId>
                    <artifactId>nekohtml</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>xmlunit</groupId>
            <artifactId>xmlunit</artifactId>
            <scope>test</scope>
        </dependency>

那么,在显示这些test-scoped依赖项时,是否需要启用我遗漏的内容,或者这是cayenne-server依赖项所特有的奇怪工件吗?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-11-26 00:12:45

作用域test的依赖关系是不可传递的。

依赖项的test依赖项不是依赖项树的一部分。它们被Maven忽略。

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

https://stackoverflow.com/questions/65008362

复制
相关文章

相似问题

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