[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XD41T87BD7A2AYD8CSW2ST":3,"skill-same:01M6XD41T87BD7A2AYD8CSW2ST":57},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":13,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":41,"updatedAt":42,"install":43,"resources":56},"01M6XD41T87BD7A2AYD8CSW2ST","maven-build-lifecycle",null,"Use when working with Maven build phases, goals, profiles, or customizing the build process for Java projects.","Waaaalnut\u002Fskillsbench","Waaaalnut","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103995656?v=4","01M6XCS9K1V51EY3JMB7DGMX24","01M6XCS9Q4WPW88W62C55G1H44",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks-no-skills\u002Ffix-build-google-auto\u002Fenvironment\u002Fskills\u002Fmaven-build-lifecycle\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30],"maven","lifecycle","build","maven build lifecycle","java","projects","process","use","goals","with","profiles","for","when","2026-11-10 10:12:30",false,"---\nname: maven-build-lifecycle\ndescription: Use when working with Maven build phases, goals, profiles, or customizing the build process for Java projects.\n---\n\n# Maven Build Lifecycle\n\nMaster Maven's build lifecycle including phases, goals, profiles, and build customization for efficient Java project builds.\n\n## Overview\n\nMaven's build lifecycle is a well-defined sequence of phases that execute in order. Understanding the lifecycle is essential for effective build configuration and optimization.\n\n## Default Lifecycle Phases\n\n### Complete Phase Order\n\n```\n1.  validate      - Validate project structure\n2.  initialize    - Initialize build state\n3.  generate-sources\n4.  process-sources\n5.  generate-resources\n6.  process-resources - Copy resources to output\n7.  compile       - Compile source code\n8.  process-classes\n9.  generate-test-sources\n10. process-test-sources\n11. generate-test-resources\n12. process-test-resources\n13. test-compile  - Compile test sources\n14. process-test-classes\n15. test          - Run unit tests\n16. prepare-package\n17. package       - Create JAR\u002FWAR\n18. pre-integration-test\n19. integration-test - Run integration tests\n20. post-integration-test\n21. verify        - Run verification checks\n22. install       - Install to local repo\n23. deploy        - Deploy to remote repo\n```\n\n### Common Phase Commands\n\n```bash\n# Compile only\nmvn compile\n\n# Compile and run tests\nmvn test\n\n# Create package\nmvn package\n\n# Install to local repository\nmvn install\n\n# Deploy to remote repository\nmvn deploy\n\n# Clean and build\nmvn clean install\n\n# Skip tests\nmvn install -DskipTests\n\n# Skip test compilation and execution\nmvn install -Dmaven.test.skip=true\n```\n\n## Clean Lifecycle\n\n```\n1. pre-clean\n2. clean         - Delete target directory\n3. post-clean\n```\n\n```bash\n# Clean build artifacts\nmvn clean\n\n# Clean specific directory\nmvn clean -DbuildDirectory=out\n```\n\n## Site Lifecycle\n\n```\n1. pre-site\n2. site          - Generate documentation\n3. post-site\n4. site-deploy   - Deploy documentation\n```\n\n```bash\n# Generate site\nmvn site\n\n# Generate and deploy site\nmvn site-deploy\n```\n\n## Goals vs Phases\n\n### Executing Phases\n\n```bash\n# Execute phase (runs all previous phases)\nmvn package\n```\n\n### Executing Goals\n\n```bash\n# Execute specific goal\nmvn compiler:compile\nmvn surefire:test\nmvn jar:jar\n\n# Multiple goals\nmvn dependency:tree compiler:compile\n```\n\n### Phase-to-Goal Bindings\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            \u003Cexecutions>\n                \u003Cexecution>\n                    \u003Cid>compile-sources\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## Build Profiles\n\n### Profile Definition\n\n```xml\n\u003Cprofiles>\n    \u003Cprofile>\n        \u003Cid>development\u003C\u002Fid>\n        \u003Cactivation>\n            \u003CactiveByDefault>true\u003C\u002FactiveByDefault>\n        \u003C\u002Factivation>\n        \u003Cproperties>\n            \u003Cenv>dev\u003C\u002Fenv>\n            \u003Cskip.integration.tests>true\u003C\u002Fskip.integration.tests>\n        \u003C\u002Fproperties>\n    \u003C\u002Fprofile>\n\n    \u003Cprofile>\n        \u003Cid>production\u003C\u002Fid>\n        \u003Cproperties>\n            \u003Cenv>prod\u003C\u002Fenv>\n            \u003Cskip.integration.tests>false\u003C\u002Fskip.integration.tests>\n        \u003C\u002Fproperties>\n        \u003Cbuild>\n            \u003Cplugins>\n                \u003Cplugin>\n                    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n                    \u003CartifactId>maven-compiler-plugin\u003C\u002FartifactId>\n                    \u003Cconfiguration>\n                        \u003Cdebug>false\u003C\u002Fdebug>\n                        \u003Coptimize>true\u003C\u002Foptimize>\n                    \u003C\u002Fconfiguration>\n                \u003C\u002Fplugin>\n            \u003C\u002Fplugins>\n        \u003C\u002Fbuild>\n    \u003C\u002Fprofile>\n\u003C\u002Fprofiles>\n```\n\n### Profile Activation\n\n```bash\n# Activate by name\nmvn install -Pproduction\n\n# Multiple profiles\nmvn install -Pproduction,ci\n\n# Deactivate profile\nmvn install -P!development\n```\n\n### Activation Triggers\n\n```xml\n\u003Cprofile>\n    \u003Cid>jdk17\u003C\u002Fid>\n    \u003Cactivation>\n        \u003C!-- Activate by JDK version -->\n        \u003Cjdk>17\u003C\u002Fjdk>\n    \u003C\u002Factivation>\n\u003C\u002Fprofile>\n\n\u003Cprofile>\n    \u003Cid>windows\u003C\u002Fid>\n    \u003Cactivation>\n        \u003C!-- Activate by OS -->\n        \u003Cos>\n            \u003Cfamily>windows\u003C\u002Ffamily>\n        \u003C\u002Fos>\n    \u003C\u002Factivation>\n\u003C\u002Fprofile>\n\n\u003Cprofile>\n    \u003Cid>ci\u003C\u002Fid>\n    \u003Cactivation>\n        \u003C!-- Activate by environment variable -->\n        \u003Cproperty>\n            \u003Cname>env.CI\u003C\u002Fname>\n            \u003Cvalue>true\u003C\u002Fvalue>\n        \u003C\u002Fproperty>\n    \u003C\u002Factivation>\n\u003C\u002Fprofile>\n\n\u003Cprofile>\n    \u003Cid>with-config\u003C\u002Fid>\n    \u003Cactivation>\n        \u003C!-- Activate by file existence -->\n        \u003Cfile>\n            \u003Cexists>src\u002Fmain\u002Fconfig\u002Fapp.properties\u003C\u002Fexists>\n        \u003C\u002Ffile>\n    \u003C\u002Factivation>\n\u003C\u002Fprofile>\n```\n\n## Resource Filtering\n\n### Enable Filtering\n\n```xml\n\u003Cbuild>\n    \u003Cresources>\n        \u003Cresource>\n            \u003Cdirectory>src\u002Fmain\u002Fresources\u003C\u002Fdirectory>\n            \u003Cfiltering>true\u003C\u002Ffiltering>\n            \u003Cincludes>\n                \u003Cinclude>**\u002F*.properties\u003C\u002Finclude>\n                \u003Cinclude>**\u002F*.xml\u003C\u002Finclude>\n            \u003C\u002Fincludes>\n        \u003C\u002Fresource>\n        \u003Cresource>\n            \u003Cdirectory>src\u002Fmain\u002Fresources\u003C\u002Fdirectory>\n            \u003Cfiltering>false\u003C\u002Ffiltering>\n            \u003Cexcludes>\n                \u003Cexclude>**\u002F*.properties\u003C\u002Fexclude>\n                \u003Cexclude>**\u002F*.xml\u003C\u002Fexclude>\n            \u003C\u002Fexcludes>\n        \u003C\u002Fresource>\n    \u003C\u002Fresources>\n\u003C\u002Fbuild>\n```\n\n### Property Substitution\n\n```properties\n# application.properties\napp.name=${project.name}\napp.version=${project.version}\napp.environment=${env}\nbuild.timestamp=${maven.build.timestamp}\n```\n\n## Build Customization\n\n### Source and Target Configuration\n\n```xml\n\u003Cproperties>\n    \u003Cmaven.compiler.source>17\u003C\u002Fmaven.compiler.source>\n    \u003Cmaven.compiler.target>17\u003C\u002Fmaven.compiler.target>\n    \u003Cmaven.compiler.release>17\u003C\u002Fmaven.compiler.release>\n    \u003Cproject.build.sourceEncoding>UTF-8\u003C\u002Fproject.build.sourceEncoding>\n\u003C\u002Fproperties>\n```\n\n### Custom Source Directories\n\n```xml\n\u003Cbuild>\n    \u003CsourceDirectory>src\u002Fmain\u002Fjava\u003C\u002FsourceDirectory>\n    \u003CtestSourceDirectory>src\u002Ftest\u002Fjava\u003C\u002FtestSourceDirectory>\n    \u003Cresources>\n        \u003Cresource>\n            \u003Cdirectory>src\u002Fmain\u002Fresources\u003C\u002Fdirectory>\n        \u003C\u002Fresource>\n    \u003C\u002Fresources>\n    \u003CtestResources>\n        \u003CtestResource>\n            \u003Cdirectory>src\u002Ftest\u002Fresources\u003C\u002Fdirectory>\n        \u003C\u002FtestResource>\n    \u003C\u002FtestResources>\n\u003C\u002Fbuild>\n```\n\n### Final Name and Output\n\n```xml\n\u003Cbuild>\n    \u003CfinalName>${project.artifactId}-${project.version}\u003C\u002FfinalName>\n    \u003Cdirectory>target\u003C\u002Fdirectory>\n    \u003CoutputDirectory>target\u002Fclasses\u003C\u002FoutputDirectory>\n    \u003CtestOutputDirectory>target\u002Ftest-classes\u003C\u002FtestOutputDirectory>\n\u003C\u002Fbuild>\n```\n\n## Multi-Module Builds\n\n### Reactor Options\n\n```bash\n# Build all modules\nmvn install\n\n# Build specific module and dependencies\nmvn install -pl module-name -am\n\n# Build dependents of a module\nmvn install -pl module-name -amd\n\n# Resume from specific module\nmvn install -rf :module-name\n\n# Build in parallel\nmvn install -T 4\nmvn install -T 1C  # 1 thread per CPU core\n```\n\n### Module Order Control\n\n```xml\n\u003C!-- parent\u002Fpom.xml -->\n\u003Cmodules>\n    \u003Cmodule>common\u003C\u002Fmodule>\n    \u003Cmodule>api\u003C\u002Fmodule>\n    \u003Cmodule>service\u003C\u002Fmodule>\n    \u003Cmodule>web\u003C\u002Fmodule>\n\u003C\u002Fmodules>\n```\n\n## Test Configuration\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        \u003C\u002Fincludes>\n        \u003Cexcludes>\n            \u003Cexclude>**\u002F*IntegrationTest.java\u003C\u002Fexclude>\n        \u003C\u002Fexcludes>\n        \u003Cparallel>methods\u003C\u002Fparallel>\n        \u003CthreadCount>4\u003C\u002FthreadCount>\n        \u003CforkCount>1\u003C\u002FforkCount>\n        \u003CreuseForks>true\u003C\u002FreuseForks>\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    \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    \u003Cconfiguration>\n        \u003Cincludes>\n            \u003Cinclude>**\u002F*IT.java\u003C\u002Finclude>\n            \u003Cinclude>**\u002F*IntegrationTest.java\u003C\u002Finclude>\n        \u003C\u002Fincludes>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n## Build Optimization\n\n### Incremental Builds\n\n```bash\n# Skip unchanged modules\nmvn install -amd\n\n# Use build cache (requires Maven Daemon)\nmvnd install\n```\n\n### Parallel Builds\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            \u003Cconfiguration>\n                \u003Cfork>true\u003C\u002Ffork>\n                \u003CcompilerArgs>\n                    \u003Carg>-J-Xmx512m\u003C\u002Farg>\n                \u003C\u002FcompilerArgs>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fplugin>\n    \u003C\u002Fplugins>\n\u003C\u002Fbuild>\n```\n\n### Build Cache\n\n```bash\n# Enable build cache (Maven 4+)\nmvn install -Dmaven.build.cache.enabled=true\n```\n\n## Debugging Builds\n\n### Verbose Output\n\n```bash\n# Debug mode\nmvn install -X\n\n# Error stacktrace\nmvn install -e\n\n# Quiet mode\nmvn install -q\n```\n\n### Effective POM\n\n```bash\n# View resolved POM\nmvn help:effective-pom\n\n# View effective settings\nmvn help:effective-settings\n\n# Active profiles\nmvn help:active-profiles\n```\n\n### Dependency Analysis\n\n```bash\n# Check plugin versions\nmvn versions:display-plugin-updates\n\n# Check dependency versions\nmvn versions:display-dependency-updates\n```\n\n## Best Practices\n\n1. **Use Clean Builds** - Run `mvn clean` before releases\n2. **Consistent Versions** - Lock plugin versions\n3. **Profile Isolation** - Keep profiles focused\n4. **Fail Fast** - Use `-ff` in CI for quick feedback\n5. **Parallel Builds** - Use `-T` for multi-module projects\n6. **Skip Wisely** - Know the difference between skip options\n7. **Resource Filtering** - Enable only where needed\n8. **Test Separation** - Unit tests in Surefire, integration in Failsafe\n9. **Reproducible Builds** - Pin all plugin versions\n10. **Document Profiles** - Comment profile purposes\n\n## Common Pitfalls\n\n1. **Skipping Tests** - Don't skip tests in CI\n2. **SNAPSHOT in Release** - Remove snapshots before release\n3. **Missing Clean** - Stale files causing issues\n4. **Profile Conflicts** - Overlapping profile configurations\n5. **Resource Filtering** - Accidentally filtering binaries\n6. **Phase Confusion** - Running wrong phase\n7. **Memory Issues** - Insufficient heap for large builds\n8. **Reactor Order** - Module dependency issues\n\n## CI\u002FCD Integration\n\n### GitHub Actions\n\n```yaml\n- name: Build with Maven\n  run: mvn -B clean verify -Pci\n\n- name: Release\n  run: mvn -B deploy -Prelease -DskipTests\n```\n\n### Jenkins Pipeline\n\n```groovy\nstage('Build') {\n    steps {\n        sh 'mvn -B clean package -DskipTests'\n    }\n}\nstage('Test') {\n    steps {\n        sh 'mvn -B test'\n    }\n}\nstage('Integration Test') {\n    steps {\n        sh 'mvn -B verify -DskipUnitTests'\n    }\n}\n```\n\n## When to Use This Skill\n\n- Setting up new Maven projects\n- Customizing build phases\n- Creating build profiles for environments\n- Configuring test execution\n- Optimizing build performance\n- Debugging build failures\n- Setting up CI\u002FCD pipelines\n- Multi-module project configuration\n","# Maven Build Lifecycle\n\nMaster Maven's build lifecycle including phases, goals, profiles, and build customization for efficient Java project builds.\n\n## Overview\n\nMaven's build lifecycle is a well-defined sequence of phases that execute in order. Understanding the lifecycle is essential for effective build configuration and optimization.\n\n## Default Lifecycle Phases\n\n### Complete Phase Order\n\n```\n1.  validate      - Validate project structure\n2.  initialize    - Initialize build state\n3.  generate-sources\n4.  process-sources\n5.  generate-resources\n6.  process-resources - Copy resources to output\n7.  compile       - Compile source code\n8.  process-classes\n9.  generate-test-sources\n10. process-test-sources\n11. generate-test-resources\n12. process-test-resources\n13. test-compile  - Compile test sources\n14. process-test-classes\n15. test          - Run unit tests\n16. prepare-package\n17. package       - Create JAR\u002FWAR\n18. pre-integration-test\n19. integration-test - Run integration tests\n20. post-integration-test\n21. verify        - Run verification checks\n22. install       - Install to local repo\n23. deploy        - Deploy to remote repo\n```\n\n### Common Phase Commands\n\n```bash\n# Compile only\nmvn compile\n\n# Compile and run tests\nmvn test\n\n# Create package\nmvn package\n\n# Install to local repository\nmvn install\n\n# Deploy to remote repository\nmvn deploy\n\n# Clean and build\nmvn clean install\n\n# Skip tests\nmvn install -DskipTests\n\n# Skip test compilation and execution\nmvn install -Dmaven.test.skip=true\n```\n\n## Clean Lifecycle\n\n```\n1. pre-clean\n2. clean         - Delete target directory\n3. post-clean\n```\n\n```bash\n# Clean build artifacts\nmvn clean\n\n# Clean specific directory\nmvn clean -DbuildDirectory=out\n```\n\n## Site Lifecycle\n\n```\n1. pre-site\n2. site          - Generate documentation\n3. post-site\n4. site-deploy   - Deploy documentation\n```\n\n```bash\n# Generate site\nmvn site\n\n# Generate and deploy site\nmvn site-deploy\n```\n\n## Goals vs Phases\n\n### Executing Phases\n\n```bash\n# Execute phase (runs all previous phases)\nmvn package\n```\n\n### Executing Goals\n\n```bash\n# Execute specific goal\nmvn compiler:compile\nmvn surefire:test\nmvn jar:jar\n\n# Multiple goals\nmvn dependency:tree compiler:compile\n```\n\n### Phase-to-Goal Bindings\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            \u003Cexecutions>\n                \u003Cexecution>\n                    \u003Cid>compile-sources\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## Build Profiles\n\n### Profile Definition\n\n```xml\n\u003Cprofiles>\n    \u003Cprofile>\n        \u003Cid>development\u003C\u002Fid>\n        \u003Cactivation>\n            \u003CactiveByDefault>true\u003C\u002FactiveByDefault>\n        \u003C\u002Factivation>\n        \u003Cproperties>\n            \u003Cenv>dev\u003C\u002Fenv>\n            \u003Cskip.integration.tests>true\u003C\u002Fskip.integration.tests>\n        \u003C\u002Fproperties>\n    \u003C\u002Fprofile>\n\n    \u003Cprofile>\n        \u003Cid>production\u003C\u002Fid>\n        \u003Cproperties>\n            \u003Cenv>prod\u003C\u002Fenv>\n            \u003Cskip.integration.tests>false\u003C\u002Fskip.integration.tests>\n        \u003C\u002Fproperties>\n        \u003Cbuild>\n            \u003Cplugins>\n                \u003Cplugin>\n                    \u003CgroupId>org.apache.maven.plugins\u003C\u002FgroupId>\n                    \u003CartifactId>maven-compiler-plugin\u003C\u002FartifactId>\n                    \u003Cconfiguration>\n                        \u003Cdebug>false\u003C\u002Fdebug>\n                        \u003Coptimize>true\u003C\u002Foptimize>\n                    \u003C\u002Fconfiguration>\n                \u003C\u002Fplugin>\n            \u003C\u002Fplugins>\n        \u003C\u002Fbuild>\n    \u003C\u002Fprofile>\n\u003C\u002Fprofiles>\n```\n\n### Profile Activation\n\n```bash\n# Activate by name\nmvn install -Pproduction\n\n# Multiple profiles\nmvn install -Pproduction,ci\n\n# Deactivate profile\nmvn install -P!development\n```\n\n### Activation Triggers\n\n```xml\n\u003Cprofile>\n    \u003Cid>jdk17\u003C\u002Fid>\n    \u003Cactivation>\n        \u003C!-- Activate by JDK version -->\n        \u003Cjdk>17\u003C\u002Fjdk>\n    \u003C\u002Factivation>\n\u003C\u002Fprofile>\n\n\u003Cprofile>\n    \u003Cid>windows\u003C\u002Fid>\n    \u003Cactivation>\n        \u003C!-- Activate by OS -->\n        \u003Cos>\n            \u003Cfamily>windows\u003C\u002Ffamily>\n        \u003C\u002Fos>\n    \u003C\u002Factivation>\n\u003C\u002Fprofile>\n\n\u003Cprofile>\n    \u003Cid>ci\u003C\u002Fid>\n    \u003Cactivation>\n        \u003C!-- Activate by environment variable -->\n        \u003Cproperty>\n            \u003Cname>env.CI\u003C\u002Fname>\n            \u003Cvalue>true\u003C\u002Fvalue>\n        \u003C\u002Fproperty>\n    \u003C\u002Factivation>\n\u003C\u002Fprofile>\n\n\u003Cprofile>\n    \u003Cid>with-config\u003C\u002Fid>\n    \u003Cactivation>\n        \u003C!-- Activate by file existence -->\n        \u003Cfile>\n            \u003Cexists>src\u002Fmain\u002Fconfig\u002Fapp.properties\u003C\u002Fexists>\n        \u003C\u002Ffile>\n    \u003C\u002Factivation>\n\u003C\u002Fprofile>\n```\n\n## Resource Filtering\n\n### Enable Filtering\n\n```xml\n\u003Cbuild>\n    \u003Cresources>\n        \u003Cresource>\n            \u003Cdirectory>src\u002Fmain\u002Fresources\u003C\u002Fdirectory>\n            \u003Cfiltering>true\u003C\u002Ffiltering>\n            \u003Cincludes>\n                \u003Cinclude>**\u002F*.properties\u003C\u002Finclude>\n                \u003Cinclude>**\u002F*.xml\u003C\u002Finclude>\n            \u003C\u002Fincludes>\n        \u003C\u002Fresource>\n        \u003Cresource>\n            \u003Cdirectory>src\u002Fmain\u002Fresources\u003C\u002Fdirectory>\n            \u003Cfiltering>false\u003C\u002Ffiltering>\n            \u003Cexcludes>\n                \u003Cexclude>**\u002F*.properties\u003C\u002Fexclude>\n                \u003Cexclude>**\u002F*.xml\u003C\u002Fexclude>\n            \u003C\u002Fexcludes>\n        \u003C\u002Fresource>\n    \u003C\u002Fresources>\n\u003C\u002Fbuild>\n```\n\n### Property Substitution\n\n```properties\n# application.properties\napp.name=${project.name}\napp.version=${project.version}\napp.environment=${env}\nbuild.timestamp=${maven.build.timestamp}\n```\n\n## Build Customization\n\n### Source and Target Configuration\n\n```xml\n\u003Cproperties>\n    \u003Cmaven.compiler.source>17\u003C\u002Fmaven.compiler.source>\n    \u003Cmaven.compiler.target>17\u003C\u002Fmaven.compiler.target>\n    \u003Cmaven.compiler.release>17\u003C\u002Fmaven.compiler.release>\n    \u003Cproject.build.sourceEncoding>UTF-8\u003C\u002Fproject.build.sourceEncoding>\n\u003C\u002Fproperties>\n```\n\n### Custom Source Directories\n\n```xml\n\u003Cbuild>\n    \u003CsourceDirectory>src\u002Fmain\u002Fjava\u003C\u002FsourceDirectory>\n    \u003CtestSourceDirectory>src\u002Ftest\u002Fjava\u003C\u002FtestSourceDirectory>\n    \u003Cresources>\n        \u003Cresource>\n            \u003Cdirectory>src\u002Fmain\u002Fresources\u003C\u002Fdirectory>\n        \u003C\u002Fresource>\n    \u003C\u002Fresources>\n    \u003CtestResources>\n        \u003CtestResource>\n            \u003Cdirectory>src\u002Ftest\u002Fresources\u003C\u002Fdirectory>\n        \u003C\u002FtestResource>\n    \u003C\u002FtestResources>\n\u003C\u002Fbuild>\n```\n\n### Final Name and Output\n\n```xml\n\u003Cbuild>\n    \u003CfinalName>${project.artifactId}-${project.version}\u003C\u002FfinalName>\n    \u003Cdirectory>target\u003C\u002Fdirectory>\n    \u003CoutputDirectory>target\u002Fclasses\u003C\u002FoutputDirectory>\n    \u003CtestOutputDirectory>target\u002Ftest-classes\u003C\u002FtestOutputDirectory>\n\u003C\u002Fbuild>\n```\n\n## Multi-Module Builds\n\n### Reactor Options\n\n```bash\n# Build all modules\nmvn install\n\n# Build specific module and dependencies\nmvn install -pl module-name -am\n\n# Build dependents of a module\nmvn install -pl module-name -amd\n\n# Resume from specific module\nmvn install -rf :module-name\n\n# Build in parallel\nmvn install -T 4\nmvn install -T 1C  # 1 thread per CPU core\n```\n\n### Module Order Control\n\n```xml\n\u003C!-- parent\u002Fpom.xml -->\n\u003Cmodules>\n    \u003Cmodule>common\u003C\u002Fmodule>\n    \u003Cmodule>api\u003C\u002Fmodule>\n    \u003Cmodule>service\u003C\u002Fmodule>\n    \u003Cmodule>web\u003C\u002Fmodule>\n\u003C\u002Fmodules>\n```\n\n## Test Configuration\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        \u003C\u002Fincludes>\n        \u003Cexcludes>\n            \u003Cexclude>**\u002F*IntegrationTest.java\u003C\u002Fexclude>\n        \u003C\u002Fexcludes>\n        \u003Cparallel>methods\u003C\u002Fparallel>\n        \u003CthreadCount>4\u003C\u002FthreadCount>\n        \u003CforkCount>1\u003C\u002FforkCount>\n        \u003CreuseForks>true\u003C\u002FreuseForks>\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    \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    \u003Cconfiguration>\n        \u003Cincludes>\n            \u003Cinclude>**\u002F*IT.java\u003C\u002Finclude>\n            \u003Cinclude>**\u002F*IntegrationTest.java\u003C\u002Finclude>\n        \u003C\u002Fincludes>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n## Build Optimization\n\n### Incremental Builds\n\n```bash\n# Skip unchanged modules\nmvn install -amd\n\n# Use build cache (requires Maven Daemon)\nmvnd install\n```\n\n### Parallel Builds\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            \u003Cconfiguration>\n                \u003Cfork>true\u003C\u002Ffork>\n                \u003CcompilerArgs>\n                    \u003Carg>-J-Xmx512m\u003C\u002Farg>\n                \u003C\u002FcompilerArgs>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fplugin>\n    \u003C\u002Fplugins>\n\u003C\u002Fbuild>\n```\n\n### Build Cache\n\n```bash\n# Enable build cache (Maven 4+)\nmvn install -Dmaven.build.cache.enabled=true\n```\n\n## Debugging Builds\n\n### Verbose Output\n\n```bash\n# Debug mode\nmvn install -X\n\n# Error stacktrace\nmvn install -e\n\n# Quiet mode\nmvn install -q\n```\n\n### Effective POM\n\n```bash\n# View resolved POM\nmvn help:effective-pom\n\n# View effective settings\nmvn help:effective-settings\n\n# Active profiles\nmvn help:active-profiles\n```\n\n### Dependency Analysis\n\n```bash\n# Check plugin versions\nmvn versions:display-plugin-updates\n\n# Check dependency versions\nmvn versions:display-dependency-updates\n```\n\n## Best Practices\n\n1. **Use Clean Builds** - Run `mvn clean` before releases\n2. **Consistent Versions** - Lock plugin versions\n3. **Profile Isolation** - Keep profiles focused\n4. **Fail Fast** - Use `-ff` in CI for quick feedback\n5. **Parallel Builds** - Use `-T` for multi-module projects\n6. **Skip Wisely** - Know the difference between skip options\n7. **Resource Filtering** - Enable only where needed\n8. **Test Separation** - Unit tests in Surefire, integration in Failsafe\n9. **Reproducible Builds** - Pin all plugin versions\n10. **Document Profiles** - Comment profile purposes\n\n## Common Pitfalls\n\n1. **Skipping Tests** - Don't skip tests in CI\n2. **SNAPSHOT in Release** - Remove snapshots before release\n3. **Missing Clean** - Stale files causing issues\n4. **Profile Conflicts** - Overlapping profile configurations\n5. **Resource Filtering** - Accidentally filtering binaries\n6. **Phase Confusion** - Running wrong phase\n7. **Memory Issues** - Insufficient heap for large builds\n8. **Reactor Order** - Module dependency issues\n\n## CI\u002FCD Integration\n\n### GitHub Actions\n\n```yaml\n- name: Build with Maven\n  run: mvn -B clean verify -Pci\n\n- name: Release\n  run: mvn -B deploy -Prelease -DskipTests\n```\n\n### Jenkins Pipeline\n\n```groovy\nstage('Build') {\n    steps {\n        sh 'mvn -B clean package -DskipTests'\n    }\n}\nstage('Test') {\n    steps {\n        sh 'mvn -B test'\n    }\n}\nstage('Integration Test') {\n    steps {\n        sh 'mvn -B verify -DskipUnitTests'\n    }\n}\n```\n\n## When to Use This Skill\n\n- Setting up new Maven projects\n- Customizing build phases\n- Creating build profiles for environments\n- Configuring test execution\n- Optimizing build performance\n- Debugging build failures\n- Setting up CI\u002FCD pipelines\n- Multi-module project configuration\n",{"name":5,"description":7},"main","7eeb258ada72b7f58119b0e7a2c00ea89d9beedd","tasks-no-skills\u002Ffix-build-google-auto\u002Fenvironment\u002Fskills\u002Fmaven-build-lifecycle","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench","https:\u002F\u002Fgithub.com\u002FWaaaalnut","student of Zhejiang University","2026-04-21 23:16:23",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add Waaaalnut\u002Fskillsbench --skill maven-build-lifecycle",{"tool":49,"command":50},"bunx","bunx skills add Waaaalnut\u002Fskillsbench --skill maven-build-lifecycle",{"tool":52,"command":53},"pnpm","pnpm dlx skills add Waaaalnut\u002Fskillsbench --skill maven-build-lifecycle","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks-no-skills\u002Ffix-build-google-auto\u002Fenvironment\u002Fskills\u002Fmaven-build-lifecycle\u002FSKILL.md",true,[],[58,72,87,112,134,152],{"skillNo":59,"name":60,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":68,"publishedAt":31},"01M6XEWMJ6VY3ZC53MPDCPG3GH","data-reconciliation","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fxlsx-recover-data\u002Fenvironment\u002Fskills\u002Fdata-reconciliation\u002FSKILL.md",[63],{"categoryNo":64,"categoryName":65,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[69,70,71],"data reconciliation","reconciliation","data",{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":31},"01M6XEW8MNPMF1KRXV6ATGFRQF","speech-to-text","Transcribe video to timestamped text using Whisper tiny model (pre-installed).","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-tutorial-indexer\u002Fenvironment\u002Fskills\u002Fspeech-to-text\u002FSKILL.md",[],[79,80,81,82,83,84,85,86],"speech","text","speech to text","transcribe video","whisper","model","Video","transcribe",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":98,"publishedAt":31},"01M6XEW3FQZP0T1RKQQJFXVY9T","video-processor","Process videos by removing segments and concatenating remaining parts. Use when you need to remove detected pauses\u002Fopenings from videos, create highlight reels, or batch process segment removals using ffmpeg filter_complex.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fvideo-processor\u002FSKILL.md",[93],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[85,99,100,101,102,103,30,104,105,24,106,107,108,109,110,25,111],"processor","video processor","batch","create","reels","parts","segments","videos","you","segment","filter","ffmpeg","remove",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":119,"publishedAt":31},"01M6XEVXJ5KZ0NTY3XZKRY4AS1","silence-detector","Detect initial silence segments in audio\u002Fvideo using energy-based analysis. Use when you need to find low-energy periods at the start of recordings (title slides, setup time, pre-roll silence).","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fsilence-detector\u002FSKILL.md",[118],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},[120,121,122,123,30,107,124,125,126,127,128,105,129,130,85,131,132,133,25],"detector","silence detector","title","slides","time","energy","at","recordings","detect","find","Audio","analysis","start","setup",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":31},"01M6XEVT3NGRN1FT7JPMAPXS6M","segment-combiner","Combine multiple segment detection results into a unified list. Use when you need to merge segments from different detectors, prepare removal lists for video processing, or consolidate detection outputs.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fsegment-combiner\u002FSKILL.md",[],[108,141,85,142,143,144,145,29,30,146,147,105,107,148,149,25,150,151],"segment combiner","detection","prepare","merge","video processing","outputs","combine","processing","consolidate","results","list",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":161,"publishedAt":31},"01M6XEVMPVASGS2KX86QK4FMT7","report-generator","Generate compression reports for video processing. Use when you need to create structured JSON reports with duration statistics, compression ratios, and segment details after video processing.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Freport-generator\u002FSKILL.md",[158],{"categoryNo":159,"categoryName":160,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000034","行政与办公人员",[162,163,164,108,30,29,107,27,148,165,166,167,25,145,168,85,169,170,102],"generator","report generator","report","statistics","structured","reports","json","compression","generate"]