Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions beast-base/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,26 @@
</execution>
</executions>
</plugin>
<!-- Build the installable BEAST.base package zip (version.xml + lib/) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.7.1</version>
<executions>
<execution>
<id>package-zip</id>
<phase>package</phase>
<goals><goal>single</goal></goals>
<configuration>
<finalName>BEAST.base.package.v${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/assembly/package.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
33 changes: 33 additions & 0 deletions beast-base/src/assembly/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.1 http://maven.apache.org/xsd/assembly-2.1.1.xsd">
<!-- Builds the installable BEAST.base package zip:
version.xml (the BEAST.base package descriptor, at repo root)
lib/beast-base.jar + its third-party runtime dependencies
beast-pkgmgmt is excluded: it is the bootstrap/launcher and is always
provided by the core distribution, so bundling it here would duplicate
the beast.pkgmgmt module on the module path. -->
<id>package</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<files>
<file>
<source>${project.basedir}/../version.xml</source>
<outputDirectory>.</outputDirectory>
</file>
</files>

<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<scope>runtime</scope>
<excludes>
<exclude>io.github.compevol:beast-pkgmgmt</exclude>
</excludes>
</dependencySet>
</dependencySets>
</assembly>
56 changes: 56 additions & 0 deletions beast-fx/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,42 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<!-- Embed version.xml (the BEAST.app package descriptor) in the JAR so
BEASTClassLoader.initServices() finds it via getResources("version.xml").
Mirrors the equivalent executions in beast-base/pom.xml. -->
<execution>
<id>embed-version-xml-in-jar</id>
<phase>generate-resources</phase>
<goals><goal>copy-resources</goal></goals>
<configuration>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}</directory>
<includes>
<include>version.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<!-- Also copy to target/ for the legacy parent-directory classpath walk -->
<execution>
<id>copy-version-xml</id>
<phase>generate-resources</phase>
<goals><goal>copy-resources</goal></goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}</directory>
<includes>
<include>version.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<!-- Copy module-namespaced fxtemplates to target/test-classes -->
<execution>
<id>copy-fxtemplates-to-test-classes</id>
Expand Down Expand Up @@ -198,6 +234,26 @@
</arguments>
</configuration>
</plugin>
<!-- Build the installable BEAST.app package zip (version.xml + lib/) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.7.1</version>
<executions>
<execution>
<id>package-zip</id>
<phase>package</phase>
<goals><goal>single</goal></goals>
<configuration>
<finalName>BEAST.app.package.v${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/assembly/package.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
41 changes: 41 additions & 0 deletions beast-fx/src/assembly/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.1 http://maven.apache.org/xsd/assembly-2.1.1.xsd">
<!-- Builds the installable BEAST.app package zip:
version.xml (the BEAST.app package descriptor)
lib/beast-fx.jar
Only beast-fx.jar is bundled. Its dependencies are provided at runtime:
beast-base (the BEAST.base package), beast-pkgmgmt (the bootstrap), and
JavaFX + jdk.jsobject (the bundled JRE+FX, resolved into the boot layer).

JavaFX is deliberately NOT bundled here: Maven resolves both the empty
automatic-module jars (e.g. javafx-graphics-25.0.2.jar) and the
platform-classified jars, and the empty ones fail module resolution
("javafx.graphics not found"). In the app image JavaFX already comes from
the JRE+FX, so bundling it is redundant as well as broken.
NOTE: a standalone/CBAN install on a plain JRE (no FX) will need JavaFX
provided separately - tracked with the per-platform packaging work. -->
<id>package</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<files>
<file>
<source>${project.basedir}/version.xml</source>
<outputDirectory>.</outputDirectory>
</file>
</files>

<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<scope>runtime</scope>
<includes>
<include>io.github.compevol:beast-fx</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
149 changes: 149 additions & 0 deletions beast-fx/version.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
<package name="BEAST.app" version="2.8.0">
<!-- BEAST.app is the JavaFX application layer (BEAUti, TreeAnnotator, LogCombiner,
AppLauncher, DensiTree) built from the beast-fx Maven module (JPMS module beast.fx).
The package id is kept as "BEAST.app" (not "BEAST.fx") for backward compatibility:
~60 published packages declare <depends on="BEAST.app">, so renaming would orphan them.

Most service providers below are also declared in beast-fx's module-info.java and are
registered from the module descriptor at runtime; they are repeated here so the package
descriptor is complete for legacy/classpath loading and package health checking. The
has.main.method service and the packageapp elements are descriptor-only concepts (not
JPMS services) and MUST live here. -->

<depends on="BEAST.base" atleast="2.8.0" atmost="2.8.0"/>

<!-- BEASTInterface providers contributed by the FX/app layer -->
<service type="beast.base.core.BEASTInterface">
<provider classname="beastfx.app.beauti.Fragment"/>
<provider classname="beastfx.app.draw.BEASTObjectSet"/>
<provider classname="beastfx.app.inputeditor.BeautiAlignmentProvider"/>
<provider classname="beastfx.app.inputeditor.BeautiConfig"/>
<provider classname="beastfx.app.inputeditor.BeautiConnector"/>
<provider classname="beastfx.app.inputeditor.BeautiDoc"/>
<provider classname="beastfx.app.inputeditor.BeautiPanelConfig"/>
<provider classname="beastfx.app.inputeditor.BeautiSubTemplate"/>
<provider classname="beastfx.app.seqgen.MergeDataWith"/>
<provider classname="beastfx.app.seqgen.SequenceSimulator"/>
<provider classname="beastfx.app.seqgen.SimulatedAlignment"/>
<provider classname="beastfx.app.tools.ClassEnumerator"/>
<provider classname="beastfx.app.tools.JarHealthChecker"/>
<provider classname="beastfx.app.tools.PackageHealthChecker"/>
</service>

<service type="beastfx.app.beauti.ThemeProvider">
<provider classname="beastfx.app.beauti.theme.Default"/>
<provider classname="beastfx.app.beauti.theme.Dark"/>
<provider classname="beastfx.app.beauti.theme.Bootstrap"/>
<provider classname="beastfx.app.beauti.theme.Fluent"/>
<provider classname="beastfx.app.beauti.theme.Win7"/>
<provider classname="beastfx.app.beauti.theme.Metro"/>
</service>

<service type="beastfx.app.inputeditor.InputEditor">
<provider classname="beastfx.app.inputeditor.BEASTObjectInputEditor"/>
<provider classname="beastfx.app.inputeditor.TypeTraitSetInputEditor"/>
<provider classname="beastfx.app.inputeditor.BooleanInputEditor"/>
<provider classname="beastfx.app.inputeditor.ConstantInputEditor"/>
<provider classname="beastfx.app.inputeditor.DoubleInputEditor"/>
<provider classname="beastfx.app.inputeditor.DoubleListInputEditor"/>
<provider classname="beastfx.app.inputeditor.EnumInputEditor"/>
<provider classname="beastfx.app.inputeditor.FileInputEditor"/>
<provider classname="beastfx.app.inputeditor.FileListInputEditor"/>
<provider classname="beastfx.app.inputeditor.IntegerInputEditor"/>
<provider classname="beastfx.app.inputeditor.IntegerListInputEditor"/>
<provider classname="beastfx.app.inputeditor.ListInputEditor"/>
<provider classname="beastfx.app.inputeditor.LongInputEditor"/>
<provider classname="beastfx.app.inputeditor.OutFileInputEditor"/>
<provider classname="beastfx.app.inputeditor.OutFileListInputEditor"/>
<provider classname="beastfx.app.inputeditor.ParameterInputEditor"/>
<provider classname="beastfx.app.inputeditor.ParametricDistributionInputEditor"/>
<provider classname="beastfx.app.inputeditor.SiteModelInputEditor"/>
<provider classname="beastfx.app.inputeditor.StringInputEditor"/>
<provider classname="beastfx.app.inputeditor.TreeFileInputEditor"/>
<provider classname="beastfx.app.inputeditor.TreeFileListInputEditor"/>
<provider classname="beastfx.app.inputeditor.XMLFileInputEditor"/>
<provider classname="beastfx.app.inputeditor.XMLFileListInputEditor"/>
<provider classname="beastfx.app.beauti.PriorInputEditor"/>
<provider classname="beastfx.app.beauti.PriorListInputEditor"/>

<provider classname="beastfx.app.inputeditor.AlignmentListInputEditor"/>
<provider classname="beastfx.app.inputeditor.LogFileInputEditor"/>
<provider classname="beastfx.app.inputeditor.LogFileListInputEditor"/>
<provider classname="beastfx.app.inputeditor.LoggerListInputEditor"/>
<provider classname="beastfx.app.inputeditor.MRCAPriorInputEditor"/>
<provider classname="beastfx.app.inputeditor.TaxonSetInputEditor"/>
<provider classname="beastfx.app.inputeditor.TaxonSetListInputEditor"/>
<provider classname="beastfx.app.inputeditor.TipDatesInputEditor"/>
<provider classname="beastfx.app.beauti.ClockModelListInputEditor"/>
<provider classname="beastfx.app.beauti.ConstantPopulationInputEditor"/>
<provider classname="beastfx.app.beauti.ExponentialPopulationInputEditor"/>
<provider classname="beastfx.app.beauti.ScaledPopulationInputEditor"/>
<provider classname="beastfx.app.beauti.GeneTreeForSpeciesTreeDistributionInputEditor"/>
<provider classname="beastfx.app.beauti.OperatorListInputEditor"/>
<provider classname="beastfx.app.beauti.SpeciesTreePriorInputEditor"/>
<provider classname="beastfx.app.beauti.StateNodeInitialiserListInputEditor"/>
<provider classname="beastfx.app.beauti.StateNodeListInputEditor"/>
<provider classname="beastfx.app.beauti.TreeDistributionInputEditor"/>

<provider classname="beastfx.app.inputeditor.spec.SiteModelInputEditor"/>
<provider classname="beastfx.app.inputeditor.spec.ScalarInputEditor"/>
<provider classname="beastfx.app.inputeditor.ScalarDistributionInputEditor"/>
<provider classname="beastfx.app.inputeditor.TensorDistributionInputEditor"/>
<provider classname="beastfx.app.inputeditor.IIDInputEditor"/>

</service>

<!-- AlignmentImporter declares classes for parsing different alignment formats -->
<service type="beastfx.app.inputeditor.AlignmentImporter">
<provider classname="beastfx.app.inputeditor.NexusImporter"/>
<provider classname="beastfx.app.inputeditor.FastaImporter"/>
<provider classname="beastfx.app.inputeditor.XMLImporter"/>
</service>


<service type="beastfx.app.beauti.PriorProvider">
<provider classname="beastfx.app.beauti.MRCAPriorProvider"/>
</service>

<service type="has.main.method">
<provider classname="beastfx.app.methodsection.XML2HTMLPaneFX"/>
</service>

<service type="beastfx.app.treeannotator.services.TopologySettingService">
<provider classname="beastfx.app.treeannotator.services.MCCTopologyService"/>
<provider classname="beastfx.app.treeannotator.services.MaxSumCladeCrediblityTopologyService"/>
<provider classname="beastfx.app.treeannotator.services.UserTargetTreeTopologyService"/>
</service>

<service type="beastfx.app.treeannotator.services.NodeHeightSettingService">
<provider classname="beastfx.app.treeannotator.services.CommonAncestorNodeHeigtService"/>
<provider classname="beastfx.app.treeannotator.services.KeepHeightsNodeHeightsService"/>
<provider classname="beastfx.app.treeannotator.services.MeanNodeHeightService"/>
<provider classname="beastfx.app.treeannotator.services.MedianNodeHeightService"/>
</service>

<packageapp description="Interactive Methods Section Generator"
class="beastfx.app.methodsection.XML2HTMLPaneFX"
/>

<packageapp description="Log File Analyser"
class="beastfx.app.tools.LogAnalyser"
/>

<packageapp description="Package health checker"
class="beastfx.app.tools.PackageHealthChecker"
/>

<packageapp description="EBSP Analyser"
class="beastfx.app.tools.EBSPAnalyser"
/>

<packageapp description="Documentiation generator"
class="beastfx.app.tools.DocMaker"
/>

<packageapp description="Calculates statistics on the credible set of a tree posterior"
class="beastfx.app.tools.TreeTraceAnalysis"
/>

</package>
Loading
Loading