[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7BRJEDHDERBDACSCF2CHPR4":3,"skill-same:01M7BRJEDHDERBDACSCF2CHPR4":45},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7BRJEDHDERBDACSCF2CHPR4","maven-plugin-configuration",null,"Use when configuring Maven plugins, setting up common plugins like compiler, surefire, jar, or creating custom plugin executions.","linyouxue\u002Fskill-repair-benchmark","linyouxue","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F216151464?v=4","01M7BJEVCXKD74KH6FG9CBVSQB","林宥学","01M7BJEVE02NP217V93BKZFC0J",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FGPT52-AllTasks-RepresentativeRuns-20260916\u002Ftasks\u002Ffix-build-google-auto\u002Ffrozen_task\u002Fenvironment\u002Fskills\u002Fmaven-plugin-configuration\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: maven-plugin-configuration\ndescription: Use when configuring Maven plugins, setting up common plugins like compiler, surefire, jar, or creating custom plugin executions.\n---\n\n# Maven Plugin Configuration\n\nMaster Maven plugin configuration including core plugins, build plugins, reporting plugins, and custom plugin development.\n\n## Overview\n\nMaven plugins provide the actual functionality for building projects. Understanding how to configure plugins effectively is essential for customizing builds, optimizing performance, and ensuring code quality.\n\n## Plugin Basics\n\n### Plugin Structure\n\n```xml\n\u003Cbuild>\n    \u003Cplugins>\n        \u003Cplugin>\n            \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n            \u003CartifactId>maven-compiler-plugin\u003C\u002FartifactId>\n            \u003Cversion>3.12.1\u003C\u002Fversion>\n            \u003Cconfiguration>\n                \u003C!-- Plugin-specific configuration -->\n            \u003C\u002Fconfiguration>\n            \u003Cexecutions>\n                \u003Cexecution>\n                    \u003Cid>compile-java\u003C\u002Fid>\n                    \u003Cphase>compile\u003C\u002Fphase>\n                    \u003Cgoals>\n                        \u003Cgoal>compile\u003C\u002Fgoal>\n                    \u003C\u002Fgoals>\n                \u003C\u002Fexecution>\n            \u003C\u002Fexecutions>\n        \u003C\u002Fplugin>\n    \u003C\u002Fplugins>\n\u003C\u002Fbuild>\n```\n\n### Plugin Management\n\n```xml\n\u003Cbuild>\n    \u003CpluginManagement>\n        \u003Cplugins>\n            \u003C!-- Define versions and shared config -->\n            \u003Cplugin>\n                \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n                \u003CartifactId>maven-compiler-plugin\u003C\u002FartifactId>\n                \u003Cversion>3.12.1\u003C\u002Fversion>\n                \u003Cconfiguration>\n                    \u003Crelease>17\u003C\u002Frelease>\n                \u003C\u002Fconfiguration>\n            \u003C\u002Fplugin>\n        \u003C\u002Fplugins>\n    \u003C\u002FpluginManagement>\n    \u003Cplugins>\n        \u003C!-- Actually use plugin (inherits config) -->\n        \u003Cplugin>\n            \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n            \u003CartifactId>maven-compiler-plugin\u003C\u002FartifactId>\n        \u003C\u002Fplugin>\n    \u003C\u002Fplugins>\n\u003C\u002Fbuild>\n```\n\n## Core Build Plugins\n\n### Compiler Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-compiler-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.12.1\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Crelease>17\u003C\u002Frelease>\n        \u003Cencoding>UTF-8\u003C\u002Fencoding>\n        \u003CshowWarnings>true\u003C\u002FshowWarnings>\n        \u003CshowDeprecation>true\u003C\u002FshowDeprecation>\n        \u003CcompilerArgs>\n            \u003Carg>-Xlint:all\u003C\u002Farg>\n            \u003Carg>-parameters\u003C\u002Farg>\n        \u003C\u002FcompilerArgs>\n        \u003CannotationProcessorPaths>\n            \u003Cpath>\n                \u003CgroupId>org.projectlombok\u003C\u002FgroupId>\n                \u003CartifactId>lombok\u003C\u002FartifactId>\n                \u003Cversion>1.18.30\u003C\u002Fversion>\n            \u003C\u002Fpath>\n        \u003C\u002FannotationProcessorPaths>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n### Resources Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-resources-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.3.1\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Cencoding>UTF-8\u003C\u002Fencoding>\n        \u003CpropertiesEncoding>UTF-8\u003C\u002FpropertiesEncoding>\n        \u003CnonFilteredFileExtensions>\n            \u003CnonFilteredFileExtension>pdf\u003C\u002FnonFilteredFileExtension>\n            \u003CnonFilteredFileExtension>ico\u003C\u002FnonFilteredFileExtension>\n            \u003CnonFilteredFileExtension>png\u003C\u002FnonFilteredFileExtension>\n            \u003CnonFilteredFileExtension>jpg\u003C\u002FnonFilteredFileExtension>\n        \u003C\u002FnonFilteredFileExtensions>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n### JAR Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-jar-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.3.0\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Carchive>\n            \u003Cmanifest>\n                \u003CaddClasspath>true\u003C\u002FaddClasspath>\n                \u003CmainClass>com.example.Main\u003C\u002FmainClass>\n                \u003CaddDefaultImplementationEntries>true\u003C\u002FaddDefaultImplementationEntries>\n                \u003CaddDefaultSpecificationEntries>true\u003C\u002FaddDefaultSpecificationEntries>\n            \u003C\u002Fmanifest>\n            \u003CmanifestEntries>\n                \u003CBuild-Time>${maven.build.timestamp}\u003C\u002FBuild-Time>\n                \u003CBuilt-By>${user.name}\u003C\u002FBuilt-By>\n            \u003C\u002FmanifestEntries>\n        \u003C\u002Farchive>\n        \u003Cexcludes>\n            \u003Cexclude>**\u002Flogback-test.xml\u003C\u002Fexclude>\n        \u003C\u002Fexcludes>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>test-jar\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>test-jar\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### Source Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-source-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.3.0\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>attach-sources\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>jar-no-fork\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### Javadoc Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-javadoc-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.6.3\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Cdoclint>none\u003C\u002Fdoclint>\n        \u003Csource>17\u003C\u002Fsource>\n        \u003Cquiet>true\u003C\u002Fquiet>\n        \u003Clinks>\n            \u003Clink>https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F17\u002Fdocs\u002Fapi\u002F\u003C\u002Flink>\n        \u003C\u002Flinks>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>attach-javadocs\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>jar\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n## Testing Plugins\n\n### Surefire Plugin (Unit Tests)\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-surefire-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.2.3\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Cincludes>\n            \u003Cinclude>**\u002F*Test.java\u003C\u002Finclude>\n            \u003Cinclude>**\u002F*Tests.java\u003C\u002Finclude>\n            \u003Cinclude>**\u002FTest*.java\u003C\u002Finclude>\n        \u003C\u002Fincludes>\n        \u003Cexcludes>\n            \u003Cexclude>**\u002F*IT.java\u003C\u002Fexclude>\n            \u003Cexclude>**\u002F*IntegrationTest.java\u003C\u002Fexclude>\n        \u003C\u002Fexcludes>\n        \u003CargLine>-Xmx1024m -XX:+UseG1GC\u003C\u002FargLine>\n        \u003Cparallel>methods\u003C\u002Fparallel>\n        \u003CthreadCount>4\u003C\u002FthreadCount>\n        \u003CforkCount>1C\u003C\u002FforkCount>\n        \u003CreuseForks>true\u003C\u002FreuseForks>\n        \u003CsystemPropertyVariables>\n            \u003Cspring.profiles.active>test\u003C\u002Fspring.profiles.active>\n        \u003C\u002FsystemPropertyVariables>\n        \u003CenvironmentVariables>\n            \u003CTEST_ENV>true\u003C\u002FTEST_ENV>\n        \u003C\u002FenvironmentVariables>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n### Failsafe Plugin (Integration Tests)\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-failsafe-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.2.3\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Cincludes>\n            \u003Cinclude>**\u002F*IT.java\u003C\u002Finclude>\n            \u003Cinclude>**\u002F*IntegrationTest.java\u003C\u002Finclude>\n        \u003C\u002Fincludes>\n        \u003CskipAfterFailureCount>3\u003C\u002FskipAfterFailureCount>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cgoals>\n                \u003Cgoal>integration-test\u003C\u002Fgoal>\n                \u003Cgoal>verify\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### JaCoCo Plugin (Code Coverage)\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.jacoco\u003C\u002FgroupId>\n    \u003CartifactId>jacoco-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>0.8.11\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>prepare-agent\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>prepare-agent\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n        \u003Cexecution>\n            \u003Cid>report\u003C\u002Fid>\n            \u003Cphase>test\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>report\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n        \u003Cexecution>\n            \u003Cid>check\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>check\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Crules>\n                    \u003Crule>\n                        \u003Celement>BUNDLE\u003C\u002Felement>\n                        \u003Climits>\n                            \u003Climit>\n                                \u003Ccounter>LINE\u003C\u002Fcounter>\n                                \u003Cvalue>COVEREDRATIO\u003C\u002Fvalue>\n                                \u003Cminimum>0.80\u003C\u002Fminimum>\n                            \u003C\u002Flimit>\n                            \u003Climit>\n                                \u003Ccounter>BRANCH\u003C\u002Fcounter>\n                                \u003Cvalue>COVEREDRATIO\u003C\u002Fvalue>\n                                \u003Cminimum>0.70\u003C\u002Fminimum>\n                            \u003C\u002Flimit>\n                        \u003C\u002Flimits>\n                    \u003C\u002Frule>\n                \u003C\u002Frules>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n## Quality Plugins\n\n### Enforcer Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-enforcer-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.4.1\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>enforce\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>enforce\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Crules>\n                    \u003CrequireMavenVersion>\n                        \u003Cversion>[3.8.0,)\u003C\u002Fversion>\n                    \u003C\u002FrequireMavenVersion>\n                    \u003CrequireJavaVersion>\n                        \u003Cversion>[17,)\u003C\u002Fversion>\n                    \u003C\u002FrequireJavaVersion>\n                    \u003CdependencyConvergence\u002F>\n                    \u003CrequireUpperBoundDeps\u002F>\n                    \u003CbanDuplicatePomDependencyVersions\u002F>\n                    \u003CbannedDependencies>\n                        \u003Cexcludes>\n                            \u003Cexclude>commons-logging:commons-logging\u003C\u002Fexclude>\n                            \u003Cexclude>log4j:log4j\u003C\u002Fexclude>\n                        \u003C\u002Fexcludes>\n                    \u003C\u002FbannedDependencies>\n                \u003C\u002Frules>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### Checkstyle Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-checkstyle-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.3.1\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CconfigLocation>checkstyle.xml\u003C\u002FconfigLocation>\n        \u003CconsoleOutput>true\u003C\u002FconsoleOutput>\n        \u003CfailsOnError>true\u003C\u002FfailsOnError>\n        \u003CviolationSeverity>warning\u003C\u002FviolationSeverity>\n        \u003CincludeTestSourceDirectory>true\u003C\u002FincludeTestSourceDirectory>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>checkstyle\u003C\u002Fid>\n            \u003Cphase>validate\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>check\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n    \u003Cdependencies>\n        \u003Cdependency>\n            \u003CgroupId>com.puppycrawl.tools\u003C\u002FgroupId>\n            \u003CartifactId>checkstyle\u003C\u002FartifactId>\n            \u003Cversion>10.12.6\u003C\u002Fversion>\n        \u003C\u002Fdependency>\n    \u003C\u002Fdependencies>\n\u003C\u002Fplugin>\n```\n\n### SpotBugs Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>com.github.spotbugs\u003C\u002FgroupId>\n    \u003CartifactId>spotbugs-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>4.8.3.0\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Ceffort>Max\u003C\u002Feffort>\n        \u003Cthreshold>Low\u003C\u002Fthreshold>\n        \u003CxmlOutput>true\u003C\u002FxmlOutput>\n        \u003CexcludeFilterFile>spotbugs-exclude.xml\u003C\u002FexcludeFilterFile>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cgoals>\n                \u003Cgoal>check\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### PMD Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-pmd-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.21.2\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Crulesets>\n            \u003Cruleset>\u002Fcategory\u002Fjava\u002Fbestpractices.xml\u003C\u002Fruleset>\n            \u003Cruleset>\u002Fcategory\u002Fjava\u002Ferrorprone.xml\u003C\u002Fruleset>\n        \u003C\u002Frulesets>\n        \u003CfailOnViolation>true\u003C\u002FfailOnViolation>\n        \u003CprintFailingErrors>true\u003C\u002FprintFailingErrors>\n        \u003CincludeTests>true\u003C\u002FincludeTests>\n        \u003CtargetJdk>17\u003C\u002FtargetJdk>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cgoals>\n                \u003Cgoal>check\u003C\u002Fgoal>\n                \u003Cgoal>cpd-check\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n## Packaging Plugins\n\n### Assembly Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-assembly-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.6.0\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CdescriptorRefs>\n            \u003CdescriptorRef>jar-with-dependencies\u003C\u002FdescriptorRef>\n        \u003C\u002FdescriptorRefs>\n        \u003Carchive>\n            \u003Cmanifest>\n                \u003CmainClass>com.example.Main\u003C\u002FmainClass>\n            \u003C\u002Fmanifest>\n        \u003C\u002Farchive>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>make-assembly\u003C\u002Fid>\n            \u003Cphase>package\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>single\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### Shade Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-shade-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.5.1\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cphase>package\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>shade\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Ctransformers>\n                    \u003Ctransformer implementation=\"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer\">\n                        \u003CmainClass>com.example.Main\u003C\u002FmainClass>\n                    \u003C\u002Ftransformer>\n                    \u003Ctransformer implementation=\"org.apache.maven.plugins.shade.resource.ServicesResourceTransformer\"\u002F>\n                \u003C\u002Ftransformers>\n                \u003Cfilters>\n                    \u003Cfilter>\n                        \u003Cartifact>*:*\u003C\u002Fartifact>\n                        \u003Cexcludes>\n                            \u003Cexclude>META-INF\u002F*.SF\u003C\u002Fexclude>\n                            \u003Cexclude>META-INF\u002F*.DSA\u003C\u002Fexclude>\n                            \u003Cexclude>META-INF\u002F*.RSA\u003C\u002Fexclude>\n                        \u003C\u002Fexcludes>\n                    \u003C\u002Ffilter>\n                \u003C\u002Ffilters>\n                \u003Crelocations>\n                    \u003Crelocation>\n                        \u003Cpattern>com.google\u003C\u002Fpattern>\n                        \u003CshadedPattern>shaded.com.google\u003C\u002FshadedPattern>\n                    \u003C\u002Frelocation>\n                \u003C\u002Frelocations>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### WAR Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-war-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.4.0\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CfailOnMissingWebXml>false\u003C\u002FfailOnMissingWebXml>\n        \u003CpackagingExcludes>WEB-INF\u002Fclasses\u002Flogback-test.xml\u003C\u002FpackagingExcludes>\n        \u003CwebResources>\n            \u003Cresource>\n                \u003Cdirectory>src\u002Fmain\u002Fwebapp\u003C\u002Fdirectory>\n                \u003Cfiltering>true\u003C\u002Ffiltering>\n                \u003Cincludes>\n                    \u003Cinclude>**\u002F*.html\u003C\u002Finclude>\n                \u003C\u002Fincludes>\n            \u003C\u002Fresource>\n        \u003C\u002FwebResources>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n## Spring Boot Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.springframework.boot\u003C\u002FgroupId>\n    \u003CartifactId>spring-boot-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.2.0\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CmainClass>com.example.Application\u003C\u002FmainClass>\n        \u003Cexcludes>\n            \u003Cexclude>\n                \u003CgroupId>org.projectlombok\u003C\u002FgroupId>\n                \u003CartifactId>lombok\u003C\u002FartifactId>\n            \u003C\u002Fexclude>\n        \u003C\u002Fexcludes>\n        \u003Clayers>\n            \u003Cenabled>true\u003C\u002Fenabled>\n        \u003C\u002Flayers>\n        \u003Cimage>\n            \u003Cname>${project.artifactId}:${project.version}\u003C\u002Fname>\n            \u003Cbuilder>paketobuildpacks\u002Fbuilder:base\u003C\u002Fbuilder>\n        \u003C\u002Fimage>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cgoals>\n                \u003Cgoal>repackage\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n## Version Management Plugins\n\n### Versions Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.codehaus.mojo\u003C\u002FgroupId>\n    \u003CartifactId>versions-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>2.16.2\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CrulesUri>file:\u002F\u002F\u002F${project.basedir}\u002Fversion-rules.xml\u003C\u002FrulesUri>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n```bash\n# Check for updates\nmvn versions:display-dependency-updates\nmvn versions:display-plugin-updates\nmvn versions:display-property-updates\n\n# Update versions\nmvn versions:update-properties\nmvn versions:use-latest-releases\nmvn versions:update-parent\n```\n\n### Release Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-release-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.0.1\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CtagNameFormat>v@{project.version}\u003C\u002FtagNameFormat>\n        \u003CautoVersionSubmodules>true\u003C\u002FautoVersionSubmodules>\n        \u003CreleaseProfiles>release\u003C\u002FreleaseProfiles>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n## Code Generation Plugins\n\n### Build Helper Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.codehaus.mojo\u003C\u002FgroupId>\n    \u003CartifactId>build-helper-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.5.0\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>add-source\u003C\u002Fid>\n            \u003Cphase>generate-sources\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>add-source\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Csources>\n                    \u003Csource>${project.build.directory}\u002Fgenerated-sources\u003C\u002Fsource>\n                \u003C\u002Fsources>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### Exec Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.codehaus.mojo\u003C\u002FgroupId>\n    \u003CartifactId>exec-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.1.1\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>run-script\u003C\u002Fid>\n            \u003Cphase>generate-sources\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>exec\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Cexecutable>bash\u003C\u002Fexecutable>\n                \u003Carguments>\n                    \u003Cargument>${project.basedir}\u002Fscripts\u002Fgenerate.sh\u003C\u002Fargument>\n                \u003C\u002Farguments>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n## Best Practices\n\n1. **Version Pinning** - Always specify plugin versions\n2. **Plugin Management** - Centralize in parent POM\n3. **Minimal Configuration** - Use defaults where possible\n4. **Execution IDs** - Use meaningful execution IDs\n5. **Phase Binding** - Bind to appropriate phases\n6. **Skip Properties** - Provide skip properties for flexibility\n7. **Documentation** - Comment complex configurations\n8. **Inheritance** - Use pluginManagement for multi-module\n9. **Updates** - Keep plugins current\n10. **Profile Separation** - Separate CI\u002Frelease plugins into profiles\n\n## Common Pitfalls\n\n1. **Missing Versions** - Relying on default versions\n2. **Wrong Phase** - Plugin bound to wrong lifecycle phase\n3. **Duplicate Executions** - Same goal running multiple times\n4. **Memory Issues** - Insufficient heap for plugins\n5. **Ordering** - Plugin execution order conflicts\n6. **Inheritance** - Unintended plugin inheritance\n7. **Fork Confusion** - Misunderstanding fork behavior\n8. **Skip Flags** - Tests accidentally skipped in CI\n\n## When to Use This Skill\n\n- Configuring build compilation settings\n- Setting up test frameworks\n- Configuring code quality checks\n- Creating executable JARs\n- Setting up CI\u002FCD builds\n- Optimizing build performance\n- Generating source code\n- Managing releases and versions\n","# Maven Plugin Configuration\n\nMaster Maven plugin configuration including core plugins, build plugins, reporting plugins, and custom plugin development.\n\n## Overview\n\nMaven plugins provide the actual functionality for building projects. Understanding how to configure plugins effectively is essential for customizing builds, optimizing performance, and ensuring code quality.\n\n## Plugin Basics\n\n### Plugin Structure\n\n```xml\n\u003Cbuild>\n    \u003Cplugins>\n        \u003Cplugin>\n            \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n            \u003CartifactId>maven-compiler-plugin\u003C\u002FartifactId>\n            \u003Cversion>3.12.1\u003C\u002Fversion>\n            \u003Cconfiguration>\n                \u003C!-- Plugin-specific configuration -->\n            \u003C\u002Fconfiguration>\n            \u003Cexecutions>\n                \u003Cexecution>\n                    \u003Cid>compile-java\u003C\u002Fid>\n                    \u003Cphase>compile\u003C\u002Fphase>\n                    \u003Cgoals>\n                        \u003Cgoal>compile\u003C\u002Fgoal>\n                    \u003C\u002Fgoals>\n                \u003C\u002Fexecution>\n            \u003C\u002Fexecutions>\n        \u003C\u002Fplugin>\n    \u003C\u002Fplugins>\n\u003C\u002Fbuild>\n```\n\n### Plugin Management\n\n```xml\n\u003Cbuild>\n    \u003CpluginManagement>\n        \u003Cplugins>\n            \u003C!-- Define versions and shared config -->\n            \u003Cplugin>\n                \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n                \u003CartifactId>maven-compiler-plugin\u003C\u002FartifactId>\n                \u003Cversion>3.12.1\u003C\u002Fversion>\n                \u003Cconfiguration>\n                    \u003Crelease>17\u003C\u002Frelease>\n                \u003C\u002Fconfiguration>\n            \u003C\u002Fplugin>\n        \u003C\u002Fplugins>\n    \u003C\u002FpluginManagement>\n    \u003Cplugins>\n        \u003C!-- Actually use plugin (inherits config) -->\n        \u003Cplugin>\n            \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n            \u003CartifactId>maven-compiler-plugin\u003C\u002FartifactId>\n        \u003C\u002Fplugin>\n    \u003C\u002Fplugins>\n\u003C\u002Fbuild>\n```\n\n## Core Build Plugins\n\n### Compiler Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-compiler-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.12.1\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Crelease>17\u003C\u002Frelease>\n        \u003Cencoding>UTF-8\u003C\u002Fencoding>\n        \u003CshowWarnings>true\u003C\u002FshowWarnings>\n        \u003CshowDeprecation>true\u003C\u002FshowDeprecation>\n        \u003CcompilerArgs>\n            \u003Carg>-Xlint:all\u003C\u002Farg>\n            \u003Carg>-parameters\u003C\u002Farg>\n        \u003C\u002FcompilerArgs>\n        \u003CannotationProcessorPaths>\n            \u003Cpath>\n                \u003CgroupId>org.projectlombok\u003C\u002FgroupId>\n                \u003CartifactId>lombok\u003C\u002FartifactId>\n                \u003Cversion>1.18.30\u003C\u002Fversion>\n            \u003C\u002Fpath>\n        \u003C\u002FannotationProcessorPaths>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n### Resources Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-resources-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.3.1\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Cencoding>UTF-8\u003C\u002Fencoding>\n        \u003CpropertiesEncoding>UTF-8\u003C\u002FpropertiesEncoding>\n        \u003CnonFilteredFileExtensions>\n            \u003CnonFilteredFileExtension>pdf\u003C\u002FnonFilteredFileExtension>\n            \u003CnonFilteredFileExtension>ico\u003C\u002FnonFilteredFileExtension>\n            \u003CnonFilteredFileExtension>png\u003C\u002FnonFilteredFileExtension>\n            \u003CnonFilteredFileExtension>jpg\u003C\u002FnonFilteredFileExtension>\n        \u003C\u002FnonFilteredFileExtensions>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n### JAR Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-jar-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.3.0\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Carchive>\n            \u003Cmanifest>\n                \u003CaddClasspath>true\u003C\u002FaddClasspath>\n                \u003CmainClass>com.example.Main\u003C\u002FmainClass>\n                \u003CaddDefaultImplementationEntries>true\u003C\u002FaddDefaultImplementationEntries>\n                \u003CaddDefaultSpecificationEntries>true\u003C\u002FaddDefaultSpecificationEntries>\n            \u003C\u002Fmanifest>\n            \u003CmanifestEntries>\n                \u003CBuild-Time>${maven.build.timestamp}\u003C\u002FBuild-Time>\n                \u003CBuilt-By>${user.name}\u003C\u002FBuilt-By>\n            \u003C\u002FmanifestEntries>\n        \u003C\u002Farchive>\n        \u003Cexcludes>\n            \u003Cexclude>**\u002Flogback-test.xml\u003C\u002Fexclude>\n        \u003C\u002Fexcludes>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>test-jar\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>test-jar\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### Source Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-source-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.3.0\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>attach-sources\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>jar-no-fork\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### Javadoc Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-javadoc-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.6.3\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Cdoclint>none\u003C\u002Fdoclint>\n        \u003Csource>17\u003C\u002Fsource>\n        \u003Cquiet>true\u003C\u002Fquiet>\n        \u003Clinks>\n            \u003Clink>https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F17\u002Fdocs\u002Fapi\u002F\u003C\u002Flink>\n        \u003C\u002Flinks>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>attach-javadocs\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>jar\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n## Testing Plugins\n\n### Surefire Plugin (Unit Tests)\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-surefire-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.2.3\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Cincludes>\n            \u003Cinclude>**\u002F*Test.java\u003C\u002Finclude>\n            \u003Cinclude>**\u002F*Tests.java\u003C\u002Finclude>\n            \u003Cinclude>**\u002FTest*.java\u003C\u002Finclude>\n        \u003C\u002Fincludes>\n        \u003Cexcludes>\n            \u003Cexclude>**\u002F*IT.java\u003C\u002Fexclude>\n            \u003Cexclude>**\u002F*IntegrationTest.java\u003C\u002Fexclude>\n        \u003C\u002Fexcludes>\n        \u003CargLine>-Xmx1024m -XX:+UseG1GC\u003C\u002FargLine>\n        \u003Cparallel>methods\u003C\u002Fparallel>\n        \u003CthreadCount>4\u003C\u002FthreadCount>\n        \u003CforkCount>1C\u003C\u002FforkCount>\n        \u003CreuseForks>true\u003C\u002FreuseForks>\n        \u003CsystemPropertyVariables>\n            \u003Cspring.profiles.active>test\u003C\u002Fspring.profiles.active>\n        \u003C\u002FsystemPropertyVariables>\n        \u003CenvironmentVariables>\n            \u003CTEST_ENV>true\u003C\u002FTEST_ENV>\n        \u003C\u002FenvironmentVariables>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n### Failsafe Plugin (Integration Tests)\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-failsafe-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.2.3\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Cincludes>\n            \u003Cinclude>**\u002F*IT.java\u003C\u002Finclude>\n            \u003Cinclude>**\u002F*IntegrationTest.java\u003C\u002Finclude>\n        \u003C\u002Fincludes>\n        \u003CskipAfterFailureCount>3\u003C\u002FskipAfterFailureCount>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cgoals>\n                \u003Cgoal>integration-test\u003C\u002Fgoal>\n                \u003Cgoal>verify\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### JaCoCo Plugin (Code Coverage)\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.jacoco\u003C\u002FgroupId>\n    \u003CartifactId>jacoco-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>0.8.11\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>prepare-agent\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>prepare-agent\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n        \u003Cexecution>\n            \u003Cid>report\u003C\u002Fid>\n            \u003Cphase>test\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>report\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n        \u003Cexecution>\n            \u003Cid>check\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>check\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Crules>\n                    \u003Crule>\n                        \u003Celement>BUNDLE\u003C\u002Felement>\n                        \u003Climits>\n                            \u003Climit>\n                                \u003Ccounter>LINE\u003C\u002Fcounter>\n                                \u003Cvalue>COVEREDRATIO\u003C\u002Fvalue>\n                                \u003Cminimum>0.80\u003C\u002Fminimum>\n                            \u003C\u002Flimit>\n                            \u003Climit>\n                                \u003Ccounter>BRANCH\u003C\u002Fcounter>\n                                \u003Cvalue>COVEREDRATIO\u003C\u002Fvalue>\n                                \u003Cminimum>0.70\u003C\u002Fminimum>\n                            \u003C\u002Flimit>\n                        \u003C\u002Flimits>\n                    \u003C\u002Frule>\n                \u003C\u002Frules>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n## Quality Plugins\n\n### Enforcer Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-enforcer-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.4.1\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>enforce\u003C\u002Fid>\n            \u003Cgoals>\n                \u003Cgoal>enforce\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Crules>\n                    \u003CrequireMavenVersion>\n                        \u003Cversion>[3.8.0,)\u003C\u002Fversion>\n                    \u003C\u002FrequireMavenVersion>\n                    \u003CrequireJavaVersion>\n                        \u003Cversion>[17,)\u003C\u002Fversion>\n                    \u003C\u002FrequireJavaVersion>\n                    \u003CdependencyConvergence\u002F>\n                    \u003CrequireUpperBoundDeps\u002F>\n                    \u003CbanDuplicatePomDependencyVersions\u002F>\n                    \u003CbannedDependencies>\n                        \u003Cexcludes>\n                            \u003Cexclude>commons-logging:commons-logging\u003C\u002Fexclude>\n                            \u003Cexclude>log4j:log4j\u003C\u002Fexclude>\n                        \u003C\u002Fexcludes>\n                    \u003C\u002FbannedDependencies>\n                \u003C\u002Frules>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### Checkstyle Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-checkstyle-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.3.1\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CconfigLocation>checkstyle.xml\u003C\u002FconfigLocation>\n        \u003CconsoleOutput>true\u003C\u002FconsoleOutput>\n        \u003CfailsOnError>true\u003C\u002FfailsOnError>\n        \u003CviolationSeverity>warning\u003C\u002FviolationSeverity>\n        \u003CincludeTestSourceDirectory>true\u003C\u002FincludeTestSourceDirectory>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>checkstyle\u003C\u002Fid>\n            \u003Cphase>validate\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>check\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n    \u003Cdependencies>\n        \u003Cdependency>\n            \u003CgroupId>com.puppycrawl.tools\u003C\u002FgroupId>\n            \u003CartifactId>checkstyle\u003C\u002FartifactId>\n            \u003Cversion>10.12.6\u003C\u002Fversion>\n        \u003C\u002Fdependency>\n    \u003C\u002Fdependencies>\n\u003C\u002Fplugin>\n```\n\n### SpotBugs Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>com.github.spotbugs\u003C\u002FgroupId>\n    \u003CartifactId>spotbugs-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>4.8.3.0\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Ceffort>Max\u003C\u002Feffort>\n        \u003Cthreshold>Low\u003C\u002Fthreshold>\n        \u003CxmlOutput>true\u003C\u002FxmlOutput>\n        \u003CexcludeFilterFile>spotbugs-exclude.xml\u003C\u002FexcludeFilterFile>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cgoals>\n                \u003Cgoal>check\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### PMD Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-pmd-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.21.2\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003Crulesets>\n            \u003Cruleset>\u002Fcategory\u002Fjava\u002Fbestpractices.xml\u003C\u002Fruleset>\n            \u003Cruleset>\u002Fcategory\u002Fjava\u002Ferrorprone.xml\u003C\u002Fruleset>\n        \u003C\u002Frulesets>\n        \u003CfailOnViolation>true\u003C\u002FfailOnViolation>\n        \u003CprintFailingErrors>true\u003C\u002FprintFailingErrors>\n        \u003CincludeTests>true\u003C\u002FincludeTests>\n        \u003CtargetJdk>17\u003C\u002FtargetJdk>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cgoals>\n                \u003Cgoal>check\u003C\u002Fgoal>\n                \u003Cgoal>cpd-check\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n## Packaging Plugins\n\n### Assembly Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-assembly-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.6.0\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CdescriptorRefs>\n            \u003CdescriptorRef>jar-with-dependencies\u003C\u002FdescriptorRef>\n        \u003C\u002FdescriptorRefs>\n        \u003Carchive>\n            \u003Cmanifest>\n                \u003CmainClass>com.example.Main\u003C\u002FmainClass>\n            \u003C\u002Fmanifest>\n        \u003C\u002Farchive>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>make-assembly\u003C\u002Fid>\n            \u003Cphase>package\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>single\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### Shade Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-shade-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.5.1\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cphase>package\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>shade\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Ctransformers>\n                    \u003Ctransformer implementation=\"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer\">\n                        \u003CmainClass>com.example.Main\u003C\u002FmainClass>\n                    \u003C\u002Ftransformer>\n                    \u003Ctransformer implementation=\"org.apache.maven.plugins.shade.resource.ServicesResourceTransformer\"\u002F>\n                \u003C\u002Ftransformers>\n                \u003Cfilters>\n                    \u003Cfilter>\n                        \u003Cartifact>*:*\u003C\u002Fartifact>\n                        \u003Cexcludes>\n                            \u003Cexclude>META-INF\u002F*.SF\u003C\u002Fexclude>\n                            \u003Cexclude>META-INF\u002F*.DSA\u003C\u002Fexclude>\n                            \u003Cexclude>META-INF\u002F*.RSA\u003C\u002Fexclude>\n                        \u003C\u002Fexcludes>\n                    \u003C\u002Ffilter>\n                \u003C\u002Ffilters>\n                \u003Crelocations>\n                    \u003Crelocation>\n                        \u003Cpattern>com.google\u003C\u002Fpattern>\n                        \u003CshadedPattern>shaded.com.google\u003C\u002FshadedPattern>\n                    \u003C\u002Frelocation>\n                \u003C\u002Frelocations>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### WAR Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-war-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.4.0\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CfailOnMissingWebXml>false\u003C\u002FfailOnMissingWebXml>\n        \u003CpackagingExcludes>WEB-INF\u002Fclasses\u002Flogback-test.xml\u003C\u002FpackagingExcludes>\n        \u003CwebResources>\n            \u003Cresource>\n                \u003Cdirectory>src\u002Fmain\u002Fwebapp\u003C\u002Fdirectory>\n                \u003Cfiltering>true\u003C\u002Ffiltering>\n                \u003Cincludes>\n                    \u003Cinclude>**\u002F*.html\u003C\u002Finclude>\n                \u003C\u002Fincludes>\n            \u003C\u002Fresource>\n        \u003C\u002FwebResources>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n## Spring Boot Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.springframework.boot\u003C\u002FgroupId>\n    \u003CartifactId>spring-boot-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.2.0\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CmainClass>com.example.Application\u003C\u002FmainClass>\n        \u003Cexcludes>\n            \u003Cexclude>\n                \u003CgroupId>org.projectlombok\u003C\u002FgroupId>\n                \u003CartifactId>lombok\u003C\u002FartifactId>\n            \u003C\u002Fexclude>\n        \u003C\u002Fexcludes>\n        \u003Clayers>\n            \u003Cenabled>true\u003C\u002Fenabled>\n        \u003C\u002Flayers>\n        \u003Cimage>\n            \u003Cname>${project.artifactId}:${project.version}\u003C\u002Fname>\n            \u003Cbuilder>paketobuildpacks\u002Fbuilder:base\u003C\u002Fbuilder>\n        \u003C\u002Fimage>\n    \u003C\u002Fconfiguration>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cgoals>\n                \u003Cgoal>repackage\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n## Version Management Plugins\n\n### Versions Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.codehaus.mojo\u003C\u002FgroupId>\n    \u003CartifactId>versions-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>2.16.2\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CrulesUri>file:\u002F\u002F\u002F${project.basedir}\u002Fversion-rules.xml\u003C\u002FrulesUri>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n```bash\n# Check for updates\nmvn versions:display-dependency-updates\nmvn versions:display-plugin-updates\nmvn versions:display-property-updates\n\n# Update versions\nmvn versions:update-properties\nmvn versions:use-latest-releases\nmvn versions:update-parent\n```\n\n### Release Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n    \u003CartifactId>maven-release-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.0.1\u003C\u002Fversion>\n    \u003Cconfiguration>\n        \u003CtagNameFormat>v@{project.version}\u003C\u002FtagNameFormat>\n        \u003CautoVersionSubmodules>true\u003C\u002FautoVersionSubmodules>\n        \u003CreleaseProfiles>release\u003C\u002FreleaseProfiles>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n## Code Generation Plugins\n\n### Build Helper Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.codehaus.mojo\u003C\u002FgroupId>\n    \u003CartifactId>build-helper-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.5.0\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>add-source\u003C\u002Fid>\n            \u003Cphase>generate-sources\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>add-source\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Csources>\n                    \u003Csource>${project.build.directory}\u002Fgenerated-sources\u003C\u002Fsource>\n                \u003C\u002Fsources>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n### Exec Plugin\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.codehaus.mojo\u003C\u002FgroupId>\n    \u003CartifactId>exec-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>3.1.1\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>run-script\u003C\u002Fid>\n            \u003Cphase>generate-sources\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>exec\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Cexecutable>bash\u003C\u002Fexecutable>\n                \u003Carguments>\n                    \u003Cargument>${project.basedir}\u002Fscripts\u002Fgenerate.sh\u003C\u002Fargument>\n                \u003C\u002Farguments>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n## Best Practices\n\n1. **Version Pinning** - Always specify plugin versions\n2. **Plugin Management** - Centralize in parent POM\n3. **Minimal Configuration** - Use defaults where possible\n4. **Execution IDs** - Use meaningful execution IDs\n5. **Phase Binding** - Bind to appropriate phases\n6. **Skip Properties** - Provide skip properties for flexibility\n7. **Documentation** - Comment complex configurations\n8. **Inheritance** - Use pluginManagement for multi-module\n9. **Updates** - Keep plugins current\n10. **Profile Separation** - Separate CI\u002Frelease plugins into profiles\n\n## Common Pitfalls\n\n1. **Missing Versions** - Relying on default versions\n2. **Wrong Phase** - Plugin bound to wrong lifecycle phase\n3. **Duplicate Executions** - Same goal running multiple times\n4. **Memory Issues** - Insufficient heap for plugins\n5. **Ordering** - Plugin execution order conflicts\n6. **Inheritance** - Unintended plugin inheritance\n7. **Fork Confusion** - Misunderstanding fork behavior\n8. **Skip Flags** - Tests accidentally skipped in CI\n\n## When to Use This Skill\n\n- Configuring build compilation settings\n- Setting up test frameworks\n- Configuring code quality checks\n- Creating executable JARs\n- Setting up CI\u002FCD builds\n- Optimizing build performance\n- Generating source code\n- Managing releases and versions\n",{"name":5,"description":7},"main","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","evaluation\u002Fresults\u002FGPT52-AllTasks-RepresentativeRuns-20260916\u002Ftasks\u002Ffix-build-google-auto\u002Ffrozen_task\u002Fenvironment\u002Fskills\u002Fmaven-plugin-configuration",1,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark","https:\u002F\u002Fgithub.com\u002Flinyouxue","2026-11-14 20:28:35",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add linyouxue\u002Fskill-repair-benchmark --skill maven-plugin-configuration",{"tool":37,"command":38},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill maven-plugin-configuration",{"tool":40,"command":41},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill maven-plugin-configuration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FGPT52-AllTasks-RepresentativeRuns-20260916\u002Ftasks\u002Ffix-build-google-auto\u002Ffrozen_task\u002Fenvironment\u002Fskills\u002Fmaven-plugin-configuration\u002FSKILL.md",true,[],[46,53,60,67,72,77],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":19},"01M7E1HGVRY73NBJ022CJG13X6","video-frame-extraction","Extract frames from video files and save them as images using OpenCV","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":19},"01M7E1HAG5R7CJ9C8NYJS771MB","openai-vision","Analyze images and multi-frame sequences using OpenAI GPT vision models","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":19},"01M7E1H7DADKB6QBWKC2KQ63SZ","image-ocr","Extract text content from images using Tesseract OCR via Python, including structured field extraction from receipts and forms","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[],{"skillNo":68,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M7E1H0WBNT43TENGQY7AVZHD","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":73,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M7E1GTC7D4N4Q2EF03875J9E","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":78,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M7E1GQ92CWFMGH53KSSE4WER","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[]]