禁用Maven生命周期中的阶段

禁用Maven生命周期中的阶段,maven,maven-3,Maven,Maven 3,如何在Maven 3默认生命周期中禁用不需要的阶段 所谓禁用,我的意思是完全地,完全地从生命周期中删除这个阶段,这样它甚至不会被调用 我可能需要一个定制的生命周期,但在我的pom.xml中找不到一个简单的方法来直接定义它。看来我需要写一个插件来列出我想要的阶段 例如,我希望default testResources、default testCompile和default test阶段永远不会发生,并从此打开构建日志: [INFO] --------------------------------

如何在Maven 3默认生命周期中禁用不需要的阶段

所谓禁用,我的意思是完全地,完全地从生命周期中删除这个阶段,这样它甚至不会被调用

我可能需要一个定制的生命周期,但在我的
pom.xml
中找不到一个简单的方法来直接定义它。看来我需要写一个插件来列出我想要的阶段

例如,我希望
default testResources
default testCompile
default test
阶段永远不会发生,并从此打开构建日志:

[INFO] ------------------------------------------------------------------------
[INFO] Building HelpDesk Webapp 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helpdesk ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory d:\proj\HelpDesk\repo\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ helpdesk ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ helpdesk ---
[INFO] Not copying test resources
[INFO]
[INFO] --- maven-compiler-plugin:3.0:testCompile (default-testCompile) @ helpdesk ---
[INFO] Not compiling test sources
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ helpdesk ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-war-plugin:2.3:war (default-war) @ helpdesk ---
[INFO] Packaging webapp
[INFO] Assembling webapp [helpdesk] in [d:\proj\HelpDesk\repo\target\helpdesk]
[INFO] Processing war project
[INFO] Copying webapp resources [d:\proj\HelpDesk\repo\src\main\webapp]
[INFO] Webapp assembled in [40 msecs]
[INFO] Building war: d:\proj\HelpDesk\repo\target\helpdesk.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
为此:

[INFO] ------------------------------------------------------------------------
[INFO] Building HelpDesk Webapp 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helpdesk ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory d:\proj\HelpDesk\repo\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ helpdesk ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-war-plugin:2.3:war (default-war) @ helpdesk ---
[INFO] Packaging webapp
[INFO] Assembling webapp [helpdesk] in [d:\proj\HelpDesk\repo\target\helpdesk]
[INFO] Processing war project
[INFO] Copying webapp resources [d:\proj\HelpDesk\repo\src\main\webapp]
[INFO] Webapp assembled in [40 msecs]
[INFO] Building war: d:\proj\HelpDesk\repo\target\helpdesk.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

如果您想继续使用预定义的包(jar、war等),您不能完全删除它们。您可以将包装保留为
pom
,通过将您想要的目标绑定到所需的阶段来定义您自己的生命周期,或者您可以完全定义您自己的生命周期。您还可以将默认目标绑定到阶段
none
,以阻止该目标执行任何实际工作,如图所示


org.apache.maven.plugins
maven资源插件
默认测试资源
没有一个

所有这些都说明了——khmarbaise的问题是一个很好的问题。一般来说,改变现有的预构建生命周期并不是最佳做法。

问题是,为什么需要改变生命周期来达到什么目的?@khmarbaise有点学术兴趣。我不喜欢Maven调用我知道没有工作要做的阶段和插件,花费计算资源并添加无用的日志条目。我知道Maven认为单元测试是一种很好的实践,但我仍然想知道是否可以禁用它们。到目前为止,我找到的最好的方法是
maven.test.skip
变量,它将日志最小化到我发布的日志。这个问题源于我对灵活调整Maven以适应我的项目、布局和构建阶段的期望。我意识到它对性能的影响很小,甚至不明显。@khmarbaise为什么我不能
maven.package.skip
?我有一个配置文件,当激活该配置文件时,将禁用我的验证插件。但这对我来说是危险的,我想禁止JAR/shade/source/etc插件创建包,因为它们是不完整的。基本上,我想用给定的解决方案停止构建,您只禁用特定插件,而不禁用生命周期本身。同意,将阶段设置为
none
不会改变生命周期。如果有其他插件绑定到同一生命周期阶段,它们仍将运行。这就是为什么我也提供了其他的想法。发现捆绑包装类型。页面上说我需要编写一个插件来定义定制的包装类型和它的生命周期。这是唯一的办法吗?我不能用一些
标记直接在POM中为我的项目定义它吗?@Alex的
目标列表
链接已断开。我在上找到了一个保存的版本。