【问题标题】:Maven build skips clean and validate phasesMaven 构建跳过清理和验证阶段
【发布时间】:2018-02-10 20:08:55
【问题描述】:

我正在使用 IntelliJ IDE。我的项目是maven project。困扰我的是,例如从 Maven 工具栏中选择“安装”阶段并单击“运行 Maven 构建”

clean 阶段未执行:

"C:\Program Files\Java\jdk-9.0.1\bin\java" -Dmaven.multiModuleProjectDirectory=A:\custom_software_projects\IdeaProjects\power_management "-Dmaven.home=C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.2\plugins\maven\lib\maven3" "-Dclassworlds.conf=C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.2\plugins\maven\lib\maven3\bin\m2.conf" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.2\lib\idea_rt.jar=53577:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.2\plugins\maven\lib\maven3\boot\plexus-classworlds-2.5.2.jar" org.codehaus.classworlds.Launcher -Didea.version=2017.3.2 install
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building power_server 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ power_server ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 5 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ power_server ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ power_server ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory A:\custom_software_projects\IdeaProjects\power_management\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ power_server ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ power_server ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ power_server ---
[INFO] 
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (default) @ power_server ---
[INFO] Building jar: A:\custom_software_projects\IdeaProjects\power_management\target\power_server-1.0-SNAPSHOT-jar-with-dependencies.jar
[INFO] 
[INFO] --- maven-dependency-plugin:3.0.2:unpack-dependencies (unpack-sigar) @ power_server ---
[INFO] log4j:log4j:jar:1.2.17 already exists in destination.
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ power_server ---
[INFO] Installing A:\custom_software_projects\IdeaProjects\power_management\target\power_server-1.0-SNAPSHOT.jar to C:\Users\ggeorgiev\.m2\repository\Power_Management_Server\power_server\1.0-SNAPSHOT\power_server-1.0-SNAPSHOT.jar
[INFO] Installing A:\custom_software_projects\IdeaProjects\power_management\pom.xml to C:\Users\ggeorgiev\.m2\repository\Power_Management_Server\power_server\1.0-SNAPSHOT\power_server-1.0-SNAPSHOT.pom
[INFO] Installing A:\custom_software_projects\IdeaProjects\power_management\target\power_server-1.0-SNAPSHOT-jar-with-dependencies.jar to C:\Users\ggeorgiev\.m2\repository\Power_Management_Server\power_server\1.0-SNAPSHOT\power_server-1.0-SNAPSHOT-jar-with-dependencies.jar
[INFO] 
[INFO] --- maven-antrun-plugin:1.4:run (Copying jar-with-dependecnies and fixing LF in .sh scripts) @ power_server ---
project.artifactId
[INFO] Executing tasks
     [copy] Copying 1 file to A:\custom_programs\power_server
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.291 s
[INFO] Finished at: 2018-02-10T21:42:17+02:00
[INFO] Final Memory: 17M/56M
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

所以,如您所见,第一步是maven-resources-plugin:2.6:resources。根据我对maven docs 的理解,当我们指定一个阶段时,所有之前的阶段都会执行到所选的阶段。每个 Maven 文档:

This command executes each default life cycle phase in order (validate, compile, package, etc.), before executing install. You only need to call the last build phase to be executed, in this case, install

为什么会跳过cleanvalidate 阶段?

编辑

我在Run Configuration 部分也有clean 阶段,但结果是一样的:

【问题讨论】:

  • 嗯,我不会回答,因为我不知道 maven 应该在所选阶段之前执行所有先前的阶段。但是,一种解决方法是创建一个 maven 目标配置并指定 clean validate install 作为目标。
  • @MarDev 我在Run Configurations 中有clean 阶段。我会更新问题
  • clean 可能只是一个奇怪的情况,因为我记得在执行许多任务时必须指定 clean install - 让我查看文档
  • 确实,默认生命周期中不包括 clean - clean 生命周期与默认生命周期不同 - 检查您链接到的文档
  • 由于您正在打包一个.jar 文件,因此默认生命周期在其要执行的阶段列表中不包括验证(请参阅默认生命周期绑定中的文档底部 参考清单

标签: java maven


【解决方案1】:

Maven 有 3 个不同的内置 lifecycles

有三个内置的构建生命周期:defaultcleansite

install 是默认生命周期的一部分,当您执行 install 时,clean 没有理由执行。

至于validate,它没有内置绑定,你可以看到here,这意味着它不会去execute

此外,构建阶段还可以绑定零个或多个目标。如果构建阶段没有绑定目标,则该构建阶段将不会执行。

【讨论】:

    【解决方案2】:

    默认生命周期不包括clean。检查docs

    引用:

    例如,默认生命周期包括以下阶段 (有关生命周期阶段的完整列表,请参阅生命周期 参考):

    • 验证 - 验证项目是否正确且所有必要 信息可用
    • compile - 编译源代码 项目
    • test - 使用合适的单元测试编译的源代码 测试框架。这些测试不应该要求打包代码 或部署
    • package - 获取编译后的代码并将其打包到它的 可分发的格式,例如 JAR。
    • 验证 - 运行任何检查 集成测试的结果,以确保满足质量标准
    • install - 将软件包安装到本地存储库中,用作 本地其他项目的依赖
    • 部署 - 在构建中完成 环境,将最终包复制到远程存储库 与其他开发者和项目共享。

    另外,validate 阶段与打包.jar 文件的默认生命周期无关。

    检查文档底部的 JAR 文件的默认生命周期绑定

    【讨论】:

    • 查看@Oleg 的回答。 default-lifecycleclean生命周期和site生命周期的区别..
    • @khmarbaise 我做了,我同意这是一个更好的答案。我相应地赞成它。
    猜你喜欢
    • 2012-05-07
    • 1970-01-01
    • 2020-12-03
    • 2012-08-18
    • 2018-06-18
    • 1970-01-01
    • 2017-06-08
    • 2020-07-07
    • 2014-06-09
    相关资源
    最近更新 更多