Select models through path sampling/stepping stone analysis
Build the package, skipping tests:
mvn clean package -DskipTestsRun an example XML through BEAST:
mvn exec:exec -Dbeast.args="src/test/resources/modelselection/examples/normalTest-1.xml"BEAUti templates and the example XMLs live under src/, not root directory:
src/
├── main/resources/modelselection/
│ ├── app/tools/ps.png
│ └── fxtemplates/
│ └── ModelSelection.xml
└── test/resources/modelselection/examples/
├── normalTest-1.xml, normalTest-2.xml, normalTestPS-1.xml, normalTestPS-2.xml,
│ testPairedPathSampler.xml, testPathSampler.xml, testPathSamplerForSimpleTree.xml
└── legacy/ (superseded example XMLs, excluded from the release ZIP)
fxtemplates/ is a main resource, so it's bundled into the jar (see below).
examples/ is a test resource, so the assembly plugin copies it into the ZIP's
top-level /examples/ directly from src/test/resources/, excluding legacy/**
(see src/assembly/beast-package.xml).
The release module jar, bundled into the BEAST package ZIP's lib/, contains:
META-INF/
├── MANIFEST.MF
└── maven/io.github.beast2-dev/model-selection/
├── pom.xml
└── pom.properties
modelselection/
├── app/tools/ (PathSampler, PathSampleAnalyser, PairedPathSampler*, GeneralisedSteppingStone, ps.png)
├── core/ (CPOLogger)
├── cpo/ (CPOAnalyser, BEASTRunAnalyser + inner classes)
├── fxtemplates/
│ └── ModelSelection.xml
├── gss/ (GeneralisedSteppingStone*, MCMC2GSS, MCMC2IS, GSSFromFile, TraceLog, ...)
│ ├── coalescent/
│ └── distribution/
└── inference/ (PathSampler, PathSamplingStep, PairedPathSampler*, AICMAnalyser, DiffLogger, ...)
version.xml
module-info.class
modelselection/fxtemplates/ModelSelection.xml is loaded via module path resource
lookup at runtime — src/assembly/beast-package.xml does not copy it anywhere else in
the ZIP.
Push a v* tag to trigger .github/workflows/ci-publish.yml, which sets the Maven
version from the tag, builds, tests, GPG-signs, and publishes to Maven Central:
git tag v1.7.0
git push origin v1.7.0Monitor the run at: https://github.com/BEAST2-Dev/model-selection/actions/workflows/ci-publish.yml
First remove -SNAPSHOT from <version> in pom.xml so it matches the release
(e.g. 1.7.0-SNAPSHOT -> 1.7.0), then build the installable BEAST package ZIP locally:
mvn clean package -DskipTestsNote: if you skip the manual edit above, the build still succeeds, but the module
jar bundled inside the ZIP (lib/model-selection-<version>.jar) will carry the
-SNAPSHOT suffix — that's meant for dev/testing builds, not an official release.
Alternatively, instead of hand-editing pom.xml, run:
mvn versions:set -DnewVersion=<version> -DgenerateBackupPoms=falseThe ZIP is written to target/MODEL_SELECTION.v<version>.zip. Then manually:
- Go to https://github.com/BEAST2-Dev/model-selection/releases/new
- Choose the matching tag (e.g.
v1.7.0), fill in the release title/notes - Upload
target/MODEL_SELECTION.v<version>.zipas a release asset - Publish