首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从mvn依赖中排除所有测试jars*:树

在Maven项目中,如果你想要从依赖树中排除所有的测试JAR文件,可以通过配置maven-dependency-plugin插件来实现。以下是一个示例配置,它将帮助你在构建过程中排除所有测试相关的依赖。

基础概念

Maven依赖树:Maven依赖树是一个项目所有依赖项的层次结构视图,它显示了每个依赖项及其传递依赖项的关系。

排除依赖:在Maven中,可以通过在依赖声明中使用<exclusions>标签来排除特定的传递依赖。

相关优势

  • 减少构建大小:排除不必要的测试JAR可以减小构建产物的大小。
  • 加快构建速度:减少了需要处理的文件数量,从而可以提高构建速度。
  • 避免依赖冲突:有时测试框架的依赖可能会与其他库产生冲突,排除它们可以避免这类问题。

类型与应用场景

  • 类型:这是一种依赖管理策略。
  • 应用场景:适用于任何需要在生产构建中排除测试依赖的场景。

示例代码

以下是一个pom.xml的配置示例,它使用maven-dependency-plugin来排除所有测试JAR:

代码语言:txt
复制
<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.2</version>
        <executions>
          <execution>
            <id>exclude-test-jars</id>
            <goals>
              <goal>tree</goal>
            </goals>
            <configuration>
              <excludes>
                <exclude>*:*test*</exclude>
              </excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

在这个配置中,<excludes>标签内的模式*:*test*会匹配所有包含test字样的依赖坐标。

遇到问题的原因及解决方法

如果你在执行mvn dependency:tree时仍然看到测试JAR,可能是因为:

  • 传递依赖:测试JAR可能是某个传递依赖的一部分。
  • 配置错误:排除规则可能没有正确配置。

解决方法

  1. 检查传递依赖:使用mvn dependency:tree -Dverbose来查看详细的依赖树,找出哪些依赖引入了测试JAR。
  2. 精确排除:根据详细信息,调整<excludes>标签中的模式,使其更精确地匹配需要排除的依赖。

例如,如果发现某个特定的库引入了测试JAR,可以这样排除:

代码语言:txt
复制
<exclude>org.example:example-library-test</exclude>

通过这种方式,你可以确保在构建过程中不会包含不必要的测试依赖。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Byteman 使用指南(十一)

二进制发行版:包含所有二进制文件(类文件 JARs 和命令脚本)、程序员指南副本、示例脚本以及相关帮助器 JAR。 完整发行版:在二进制发行版的基础上增加源代码和 javadoc JARs。...有关如何在 Ant 构建脚本中配置以引用 Byteman 下载中的必要 JAR 的信息。更复杂的使用示例可参见 Byteman 故障注入教程。...在 pom.xml 中添加所需依赖的详细信息。更复杂的使用场景可参见 Byteman 故障注入教程。此外,Byteman 提供了一个 Maven 插件,可在测试周期中解析和类型检查测试规则脚本。...从源代码构建 Byteman 在源代码树顶级目录下执行以下命令可构建 Byteman: mvn package 此命令会在每个子模块的 target 目录(如 agent/target、submit/...Byteman BMUnit 教程:演示如何通过 Ant 或 Maven 将 Byteman 集成到 JUnit 或 TestNG 测试中。

5600
  • Spring Boot 2.0.0参考手册_中英文对照_Part II_11-12

    这应该给你一个工作,你可以通过运行mvn package来测试一下(你可以忽略警告“jar will be empty - no content was marked for inclusion!”)。...dependency:tree命令将你的工程依赖打印成一棵树的形式。...在工程的根目录中输入mvn spring-boot:run来启动应用。...通过创建一个在产品中能运行的完整的自包含可执行jar文件来结束我们的例子。可执行jars(有时称为“fat jars”)是包含编译的类和代码运行需要的所有jar依赖的存档文件。...为了解决这个问题,许多开发者使用“uber” jars。uber jar简单的将所有jars的所有类打包到一个单独的存档文件中。这个方法的问题是很难看到你的应用正在使用的是哪个库。

    40940

    把Maven的架构,用法,坑点介绍的清清楚楚

    deploy 将打包的文件发布到私服 mvn dependency:tree 打印出项目的整个依赖树 当然也可以连着使用 mvn clean package 清理打包 mvn clean package...一个命令跑完所有测试用例, 要注意的是只会执行以Test开头或者结尾的测试类,也没必要自己写测试类,我在推荐阅读第一篇文章中演示了快速生成测试类的方法,可以去看看,生成的测试类都是以Test结尾的 mvn...如何看依赖的距离关系呢?...前文说过,执行如下命令打印出全局的依赖树,层级关系特别清楚 mvn dependency:tree > show.txt 声明优先原则 项目依赖如图,路径一样,会选用st-common-lib的哪个版本呢...依赖排除 去掉间接引入的jar包 如不想用spring boot默认提供的log,想集成第三方的log时,或者说上面依赖仲裁的第二个例子中,只想用st-common-lib的1.1版本,就可以把1.0版本排除掉

    2.1K20

    0645-6.2.0-为什么我在CDH6上使用Spark2.4 Thrift失败了

    在CDH5中通过自己单独安装的方式运行Thrift服务现在已经调通并在使用的是如下版本组合: 1.在CDH5中安装Spark1.6的Thrift服务,参考《0079-如何在CDH中启用Spark Thrift...从Spark2.2开始到最新的Spark2.4,因为变化较大,不能够采用上述两种办法直接替换jar包的方式实现,更多的依赖问题导致需要重新编译或者修改更多的东西才能在CDH5中使用最新的Spark2.4...在CDH5基于网易开源的工具Kyuubi实现的Spark2.4 Thrift功能,参考《0644-5.16.1-如何在CDH5中使用Spark2.4 Thrift》。...可以正常的查看到所有的库和表,但是执行count等操作时报错 ? 总结:由于Spark的版本与CDH5中Spark2版本的包冲突问题导致,进行count或查询有数据的表是异常。...2.使用Spark官网的方式选择hadoop版本,hive版本,使用mvn编译,编译失败。 3.使用cdh的Spark2.4的pom文件引入thrift依赖,使用mvn编译,失败。

    3.4K30

    Jar 包依赖冲突排查思路和解决方法

    因此,如何排查和解决 Jar 包依赖冲突问题成为了每个 Java 开发人员必须掌握的技能之一。什么是 Jar 包依赖冲突?...这种情况下,我们需要检查项目中所使用的依赖是否存在冲突,并及时进行解决,否则就会影响项目的正常运行。如何排查 Jar 包依赖冲突?...例如,在使用 Maven 时,可以通过在命令行中执行“mvn dependency:tree”命令来获取依赖树。...$ mvn dependency:tree该命令会输出项目的依赖树,包括每个依赖的版本号、父子依赖关系等信息。通过查看依赖树,我们可以快速定位哪些依赖存在冲突。...方法二:排除 Jar 包依赖在 Maven 中,我们可以使用“排除依赖”(exclude)的方式来解决冲突问题。

    2.7K40

    走进Java接口测试之构建工具Maven入门

    ,将 Maven 安装配置到操作系统环境中,主要就是配置 M2_HOME 和 PATH 两项,如下图: 都搞定后,验证一下,打开 doc 输入mvn -v 如何得到下面信息就说明配置成功了 主要目录...repo1:匹配所有远程仓库,repo1 除外,使用感叹号将仓库从匹配中排除 需要注意的是,当镜像仓库不稳定或者停止服务的时候,Maven 仍将无法访问被镜像仓库,因而将无法下载构件...) mvn clean compile:表示先运行清理之后运行编译,会将代码编译到 target 文件夹中 mvn clean test:运行清理和测试。...:任何子目录下所有命名以Test结尾的java类 跳过测试 mvn package-DskipTests 第一种方式:POM中配置 maven-surefire-plugin 插件提供该属性(一般不推荐...mvn test -Dtest =RandomGeneratorTest [测试用例的类名] ——效果是只有需要测试的测试类得到运行 mvn test -Dtest =Random*Test ——运行所有类名以

    1.2K00

    Spring Boot 2.0.0参考手册_中文版_Part II_11-12

    在工程的根目录中输入mvn spring-boot:run来启动应用。...可执行jars(有时称为“fat jars”)是包含编译的类和代码运行需要的所有jar依赖的存档文件。...可执行jars和Java Java没有提供任何标准方法来加载嵌套的jar文件(例如,jar文件本身包含在一个一个jar中)。如果你想分发一个自包含的应用,这可能是个问题。...为了解决这个问题,许多开发者使用“uber” jars。uber jar简单的将所有jars的所有类打包到一个单独的存档文件中。这个方法的问题是很难看到你的应用正在使用的是哪个库。...保存你的pom.xml并从命令行中运行mvn package: $ mvn package [INFO] Scanning for projects...

    53330

    走进Java接口测试之构建工具Maven入门

    都搞定后,验证一下,打开 doc 输入 mvn-v 如何得到下面信息就说明配置成功了。 ? 主要目录 ?...repo1:匹配所有远程仓库,repo1 除外,使用感叹号将仓库从匹配中排除; 需要注意的是,当镜像仓库不稳定或者停止服务的时候,Maven 仍将无法访问被镜像仓库,因而将无法下载构件...target 文件夹中; mvn clean test:运行清理和测试; mvn cleanpackage:运行清理和打包; mvn clean install:运行清理和安装,会将打好的包安装到本地仓库中...有时候你引入的依赖中包含你不想要的依赖包,你想引入自己想要的,这时候就要用到排除依赖了,比如下图中 spring-boot-starter-web 自带了 logback 这个日志包,我想引入 log4j2...mvn test-Dtest=RandomGeneratorTest[测试用例的类名] ——效果是只有需要测试的测试类得到运行; mvn test-Dtest=Random*Test ——运行所有类名以

    1.3K20

    解决对接华为kafka 进行Kerberos认证时的sun.security.krb5.KrbException

    配置文件是不是客户端上最新的 3. zk依赖包是不是华为的,不能是开源的 4. zookeeper.server.principal 这个参数是不是 zookeeper/hadoop.hadoop.com...依次排查 1、2 没问题 在代码中进行了4的修改 没有改3的情况下 报错依旧 从华为客户端中 /opt/client/Kafka/kafka/libs/目录下拷贝出三个jar包 (不知道具体是哪个有修改...kafka,华为技术支持说zookeeper,保险起见都使用华为的) kafka_2.11-1.1.0.jar kafka-clients-1.1.0.jar zookeeper-3.5.1.jar mvn...=huawei_kafka -Dversion=1.1.0 -Dpackaging=jar mvn install:install-file -Dfile=/Users/other/jars/kafka-clients...=zookeeper -Dversion=3.5.1 -Dpackaging=jar 在pom.xml中的配置: org.apache.kafka</

    2.5K51

    Maven 极简教程「附」常用的 Maven 命令

    test-compile 运行测试:mvn test 产生site:mvn site 打包:mvn package 在本地Repository中安装jar:mvn install 清除产生的项目:mvn...--该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。要获取更多信息,请看项目依赖机制。...--该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。要获取更多信息,请看项目依赖机制。...--当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的依赖。...--可选依赖,如果你在项目B中把C依赖声明为可选,你就需要在依赖于B的项目(例如项目A)中显式的引用对C的依赖。可选依赖阻断依赖的传递性。

    2K30

    maven 依赖管理最佳实践

    而 maven 可以自动地从清理、编译、测试到生成报告、打包、部署,极大的简化了我们日常的工作,同时它还是一个依赖管理工具和项目信息管理工具,提供了中央仓库,能帮助我们自动下载构件。...否 标记依赖是否可选 exclusions 否 排除传递性依赖选项 3. scope — 依赖范围 maven 在不同的阶段,使用的包加载路径是不同的。...第一声明优先原则,在依赖路径长度相等的前提下,在POM中依赖声明最靠前的依赖优先 例如,项目A有这样的依赖关系: 1....依赖相关的命令 mvn dependency:list — 列出最终确定的依赖 mvn dependency:tree — 打出依赖树 mvn dependency:analyze — 依赖分析,给出项目中已使用但未声明的依赖...依赖管理 多模块项目中,定义一个主 pom,在主 pom 中使用 dependencyManagement 定义依赖、版本和依赖排除 子模块从主 pom 中继承依赖,一般情况下,不要在子模块中做依赖排除

    83610

    【工具系列】mvnd:maven全新构建插件,提高性能

    前言: 早上打包项目的时候发现打包速度很慢,耗时颇久,就在一个群里求助,如何使maven打包效率加快,一个群友发来一个链接,如图。...Maven插件类的类加载器缓存在多个构建中,插件jars只会被读取和解析一次。 JVM中JIT生成的本机代码会被保留。与Maven相比,JIT编译花费的时间更少。...这不仅适用于来自Maven插件和Maven内核的代码,也适用于来自JDK本身的所有代码。 默认情况下,mvnd使用多个CPU内核并行构建模块。...如果您的源代码树不支持并行构建,请在命令行上传递-T1以使您的构建串行。...打包测试 # mvn 打包命令 mvn clean package -Dmaven.test.skip=true # 执行结果 [INFO] ----------------------------

    1.7K20

    依赖 jar 没有传递,导致找不到类文件而启动失败了

    又是一顿调整依赖! 还不行! 难道是我引入的引来版本不对? 从其他项目找一找怎么用的! 依然不行! 难道是他的 jar 包里面又依赖了很多其他的? 试着 exclusion 掉其他依赖! 依然不行!...既然是打包没有打进去,那就看一下 mvn 依赖树的问题吧! 解决问题 ? 项目结构 web 启动失败,是因为 service 添加的依赖,没有传递到 web,所以 web 打包没有打进去那个类。...现在进入解决方式: 查看 maven 依赖树 进入到 web module,执行以下命令。...PS: 我所有的依赖版本都是在父 POM 进行维护的,子 module 只有依赖 groupId 和 artifactId。 所以归根到底,是因为父 POM 的版本没有传递下去!...下次再遇到记得 mvn -X dependency:tree>tree.txt 看下依赖树! 我的实践已经证明了:重启、清缓存、排除依赖都是没用的! - -

    2.1K20
    领券