modelscope.cn

manage-maven-profiles

Maven build profile classification and user workflow for unmatched profiles

Installation

$ npx skills add https://modelscope.cn

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from modelscope.cn · top by installs.

npx skills add https://modelscope.cn

Browse all from modelscope.cn

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Allowed toolsRead, Bash, AskUserQuestion

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,545 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Maven Profile Management

Classify Maven build profiles that weren't auto-matched during discovery.

When to Use

This skill is invoked by analyze-project-architecture when:

  1. Project contains Maven modules (build_systems includes maven)
  2. Discovery found NO-MATCH-FOUND profiles

Do not use directly - invoked conditionally from architecture analysis workflow.


Profile Classification

Maven profiles enable optional build features. Extension API classifies profiles during discovery:

Classification Meaning
Canonical (e.g., coverage) Generates build command
NO-MATCH-FOUND No command generated

Key Insight: Most NO-MATCH-FOUND profiles are correctly unmatched:

  • apache-release → Release process, not a build command
  • skip-unit-tests → Test skipping, not a positive command
  • use-apache-snapshots → Repository config, not a command

Workflow

Step 1: Collect Unmatched Profiles Across All Modules

Step 1a: Get Module List

python3 .plan/execute-script.py plan-marshall:analyze-project-architecture:architecture modules

Output (TOON):

modules[N]:
  - module-a
  - module-b
  - module-c

Step 1b: Query Each Module for Profiles

For each module in the list:

python3 .plan/execute-script.py plan-marshall:analyze-project-architecture:architecture \
  derived-module --name {module-name}

Parse the TOON output:

  • Check build_systems contains maven
  • If Maven, check metadata.profiles for entries with canonical: NO-MATCH-FOUND

Step 1c: Build Unmatched Profile Set

Collect all NO-MATCH-FOUND profiles into a deduplicated set:

unmatched_profiles = {profile-id-1, profile-id-2, ...}

Note: Same profile ID may appear in multiple modules. Only ask once per unique profile ID.

If set is empty → Exit, nothing to do.

Step 2: Ask User About Each Unmatched Profile

For each NO-MATCH-FOUND profile:

AskUserQuestion:
  question: "Maven profile '{profile-id}' is unmatched. What should it do?"
  header: "Profile"
  options:
    - label: "Ignore"
      description: "Leave as NO-MATCH-FOUND, no command generated"
    - label: "Skip"
      description: "Add to skip list, exclude from all processing"
    - label: "Map to canonical"
      description: "Map to integration-tests, coverage, benchmark, or quality-gate"
  multiSelect: false

Step 3: Apply User Decision

Choice Action Command
Ignore Leave as-is None
Skip Add to skip list See below
Map Add mapping See below

Skip - Add to skip list:

# Get current value first
python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config ext-defaults get \
  --key build.maven.profiles.skip

# Append new profile (comma-separated)
python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config ext-defaults set \
  --key build.maven.profiles.skip --value "{existing},{profile-id}"

Map - Add canonical mapping:

# Get current mappings first
python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config ext-defaults get \
  --key build.maven.profiles.map.canonical

# Append new mapping (comma-separated profile:canonical pairs)
python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config ext-defaults set \
  --key build.maven.profiles.map.canonical --value "{existing},{profile-id}:{canonical}"

Step 4: Re-run Discovery

After any configuration change:

python3 .plan/execute-script.py plan-marshall:analyze-project-architecture:architecture discover --force

Canonical Classifications

Canonical Description Example Profile IDs
integration-tests Integration/E2E tests it, e2e, local-integration-tests
coverage Code coverage jacoco, istanbul
benchmark Benchmarks jmh, perf, stress
quality-gate Quality checks pre-commit, lint, checkstyle
skip Exclude from command generation Internal profiles

Multiple Profiles to One Canonical

When multiple profiles map to the same canonical:

  • Only ONE command is generated
  • First discovered profile becomes primary
  • All profiles listed in all_profiles

User override: Add unwanted profiles to skip list.


Storage

Configuration stored in marshal.json under extension_defaults:

{
  "extension_defaults": {
    "build.maven.profiles.skip": "itest,native",
    "build.maven.profiles.map.canonical": "local-integration-tests:integration-tests,perf:benchmark"
  }
}

Key Formats:

  • build.maven.profiles.skip - Comma-separated profile IDs to exclude
  • build.maven.profiles.map.canonical - Comma-separated profile:canonical pairs

Skip list and profile mappings are read during architecture discovery to classify profiles.


Related Documents

Document Purpose
[maven-impl.md](../plan-marshall-plugin/standards/maven-impl.md) Maven profile pipeline implementation
[canonical-commands.md](../../plan-marshall/skills/extension-api/standards/canonical-commands.md) Command vocabulary