Skip to content

Publish BEAST 3 artifacts to Maven Central #39

@alexeid

Description

@alexeid

Problem

BEAST 3 artifacts could be published to GitHub Packages, but this requires authentication (a GitHub PAT with read:packages scope) even for public repositories. This is a barrier for external package developers who need to depend on beast-base, beast-pkgmgmt, or beast-fx.

Proposal

Publish BEAST 3 artifacts to Maven Central under the namespace io.github.compevol. Maven Central is free for open source projects and requires no authentication to pull dependencies.

Namespace

Register io.github.compevol via the Central Portal. Verification is done by creating a temporary repo in the CompEvol GitHub org with a verification key as its name.

Artifact coordinates

Current (GitHub Packages) Proposed (Maven Central)
beast:beast-base io.github.compevol:beast-base
beast:beast-pkgmgmt io.github.compevol:beast-pkgmgmt
beast:beast-fx io.github.compevol:beast-fx
beast:beagle io.github.compevol:beagle
beast:colt io.github.compevol:colt

Requirements

Maven Central requires:

  • Sources JAR and javadoc JAR for each artifact
  • GPG signatures on all artifacts
  • POM metadata: name, description, license, SCM URL, developer info

Benefits

  • No authentication needed — any developer can add beast-base as a dependency and it just works
  • Standard tooling — Maven Central is the default repository, no <repository> block needed in POMs
  • Reliability — Maven Central has an SLA and CDN; GitHub Packages has had outages
  • Discoverability — packages are searchable on https://central.sonatype.com/

Migration path

  1. Register io.github.compevol namespace
  2. Add maven-source-plugin, maven-javadoc-plugin, and maven-gpg-plugin to the build
  3. Update groupId from beast to io.github.compevol across all POMs
  4. Set up CI to publish to Maven Central on release tags
  5. Update external packages (morph-models, beast-package-skeleton) to use new coordinates
  6. Keep GitHub Packages as a secondary/snapshot repository if desired

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions