【问题标题】:In what lifecycle point are tests ignored when building?在构建时忽略测试在哪个生命周期点?
【发布时间】:2016-02-06 21:42:47
【问题描述】:

我正在尝试了解有关测试的 Maven 构建生命周期: 假设我有一个项目,在 src/main 文件夹中有一个类,在 src/test 中有另一个类。当我运行 mvn install 时,它会被编译、测试、打包和安装。

到目前为止,我认为 maven 不会将测试打包在快照中,因为这不是“生产”代码。这是真的? 在这种情况下,ma​​ven 什么时候会忽略测试文件?

【问题讨论】:

  • 是的,这是真的。除非您使用某些插件来打包测试,否则它不会打包测试。在这里阅读:Introduction to the Build Lifecycle
  • 对您的问题的简单回答是肯定的。测试不是生产,因此将它们打包到 jar 文件中没有意义......只有生产代码被打包到 jar 文件中..

标签: maven


【解决方案1】:

你所说的关于 Maven lifecycle 是真的。 “主要”阶段包括:

  • compile:在这个阶段,运行maven-compiler-plugin:compile目标,编译项目的主要代码。
  • test-compile:在这个阶段,运行maven-compiler-plugin:testCompile目标,编译项目的测试代码。
  • test:在这个阶段,maven-surefire-plugin:test 目标被运行,所有的单元测试都被执行。
  • package:在此阶段,maven-jar-plugin:jar 目标运行并创建当前项目的 JAR。默认情况下,此 JAR 将包含 target/classes 下的所有类,其中包含所有主要类,但不包含位于 target/test-classes 内的测试类。你可以说 Maven 在这一步忽略了测试类。
  • install:在此阶段,maven-install-plugin:install 会将主要工件和每个附加工件安装到您的本地存储库中。

更准确的回答,不是 Maven 忽略了测试类,而是默认情况下,打包过程只考虑主类。但是您可以将其配置为也将带有 maven-jar-plugin:test-jar 目标的测试类打包到另一个附加的工件中。

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 1970-01-01
    • 2021-03-09
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多