microsoft/maven-winget
Python
Captured source
source ↗microsoft/maven-winget
Language: Python
License: MIT
Stars: 0
Forks: 0
Open issues: 0
Created: 2026-06-02T17:44:54Z
Pushed: 2026-06-02T20:18:03Z
Default branch: main
Fork: no
Archived: no
README:
maven-winget
  
WinGet packaging for the official Apache Maven binary ZIP distributions.
This repository tracks releases published by the Apache Maven project, generates WinGet manifests from the official Maven ZIP archives, and validates that those manifests remain in sync. It does not build Maven from source.
Why this repository exists
Windows developers should be able to install Apache Maven from WinGet using artifacts published by the Maven team itself. This repository keeps that flow simple:
- consume official Apache Maven ZIP binaries only
- generate WinGet manifests in-repo for review
- track stable and preview Maven lines separately
- automate updates when new Maven releases appear upstream
Packages
| Package | Track | Alias | Notes | | --- | --- | --- | --- | | Apache.Maven | Stable Maven 3 | mvn | Recommended for most users | | Apache.Maven.Preview | Preview Maven 4 | mvn4 | Separate alias to avoid collisions with stable Maven |
Current tracked releases
| Package | Version | Upstream ZIP | | --- | --- | --- | | Apache.Maven | 3.9.16 | https://dlcdn.apache.org/maven/maven-3/3.9.16/binaries/apache-maven-3.9.16-bin.zip | | Apache.Maven.Preview | 4.0.0-rc-5 | https://dlcdn.apache.org/maven/maven-4/4.0.0-rc-5/binaries/apache-maven-4.0.0-rc-5-bin.zip |
How it works
1. tools/update_maven_manifests.py reads Maven Central metadata for org.apache.maven:apache-maven. 2. It finds the latest stable Maven 3 release and latest Maven 4 preview release candidate. 3. It downloads the official ZIP archives and computes the SHA256 hashes required by WinGet. 4. It generates WinGet multi-file manifests under manifests/.
Repository layout
.github/workflows/ CI and scheduled update workflows manifests/ Generated WinGet manifests tools/update_maven_manifests.py Manifest generator tests/ Unit tests for parsing and generation specs/PLAN.md Planning and design notes
Development
Regenerate manifests:
python3 tools/update_maven_manifests.py
Run tests:
python3 -m unittest discover -s tests -p 'test_*.py' -v
Automation
validate.ymlruns tests, regenerates manifests, verifies committed output is current, and runswinget validateon generated version manifests.update-manifests.ymlruns on a schedule or manually, validates generated manifests withwinget validate, and opens a pull request when tracked releases change.publish-winget-pkgs.ymlruns on a schedule, onmainpushes that changemanifests/**, or manually. It submits missing Maven package versions tomicrosoft/winget-pkgsviawingetcreate submit.
Required secret for publishing
publish-winget-pkgs.yml requires a repository secret:
WINGET_CREATE_GITHUB_TOKEN: GitHub Personal Access Token (classic) withpublic_reposcope (as required by WingetCreate) so the workflow can create PRs inmicrosoft/winget-pkgs.
FAQ
Why is Maven 4 a separate package?
Maven 4 is still published upstream as a preview / release candidate line. Keeping it in Apache.Maven.Preview with the mvn4 alias avoids command conflicts and lets users keep stable Maven 3 installed as mvn.
Why use ZIP packages instead of rebuilding Maven?
The goal is to distribute the official Apache Maven binaries through WinGet, not to produce a separate downstream build. Using the published ZIP archives preserves the upstream release artifacts.
Where do the artifacts come from?
Version discovery and download endpoints used by this repository:
- https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/maven-metadata.xml
- https://downloads.apache.org/maven/
- https://dlcdn.apache.org/maven/
Contributing
Issues and pull requests are welcome. If you change generation logic, regenerate manifests and run the test suite before submitting.
Planning
Project planning and design notes live in [specs/PLAN.md](specs/PLAN.md).
Notability
notability 3.0/10Routine new repo by Microsoft