How can I disable default lifecycle phases in Maven 3?
If you want to continue using a predefined packaging (jar, war, etc.) you cannot totally remove them. You may leave the packaging as pom
and define your own lifecycle by binding the goals you want to the desired phases, or you may define your own lifecycle entirely. You may also bind a default goal to phase none
to prevent the goal from doing any real work as shown.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>default-testResources</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
All that said - khmarbaise's question is a good one. Generally it's not a best practice to change the existing pre-built lifecycles.
Related videos on Youtube
Alex
Updated on September 14, 2022Comments
-
Alex over 1 year
By disable I mean completely, entirely cut the phase from the lifecycle, so that it is not even invoked.
I might need a custom lifecycle but I could not find an easy way to define it straight in my
pom.xml
. It appears I need to write a plugin just to list phases I want.For example, I would like
default-testResources
,default-testCompile
anddefault-test
phases to never happen and turn my build log from this:[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] ------------------------------------------------------------------------
into this:
[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] ------------------------------------------------------------------------
-
khmarbaise about 11 yearsThe question is why do you need such changed life cycle for what purpose?
-
Alex about 11 years@khmarbaise Sort of academic interest. I don't like the idea that Maven invokes phases and plugins that I know have no work to do, spending computational resources and adding useless log entries. I am aware that unit tests are considered good practice by Maven, but still wonder if I could disable them. Best way I found so far is
maven.test.skip
variable that minimized the log to what I posted. The question arose from my expectation of flexibility to adjust Maven to my project, my layout and my build phases. I realize it has minimal, or even unnoticeable performance impact. -
caduceus@khmarbaise why can't I
maven.package.skip
? I have profile which when activated disables my verification plugin. But that's dangerous for me, and I want to prohibit the creation of a package by the JAR/shade/source/etc plugins since they would be incomplete. Basically I want to stop the build
-
-
khmarbaise about 11 yearsWith the given solution you only disable the particular plugin but not the life cycle itself.
-
user944849 about 11 yearsAgreed, setting phase to
none
doesn't change the lifecycle. If there are other plugins bound to the same lifecycle phase they will still run. That's why I provided the other ideas as well. -
Alex about 11 yearsFound goals listing for bundled packaging types. The page says I need to write a plugin to define custom packaging type and a lifecycle for it. Is this the only way? Cannot I define it straight in a POM for my project with some
<lifecycle>
tag?