diff --git a/CHANGELOG.md b/CHANGELOG.md index 57c34c3..fa157a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased / 0.2.0 +- Read the CRM QBit metadata version from the Maven-filtered artifact version so release metadata matches the build. + - Adopt QQQ 4.1.0-RC.7 native help bundles, replacing the RC.6 stand-in loader with host-neutral CRM help, live references and the core coverage gate. - Upgrade to Java 21, QQQ 4.1.0-RC.6 and qbit-build-parent 2.1.2. diff --git a/pom.xml b/pom.xml index 21e9ebf..0300453 100644 --- a/pom.xml +++ b/pom.xml @@ -142,6 +142,7 @@ true help/*.yaml + qbit-crm.properties @@ -149,10 +150,20 @@ false help/*.yaml + qbit-crm.properties + + org.apache.maven.plugins + maven-surefire-plugin + + + ${project.version} + + + org.apache.maven.plugins maven-checkstyle-plugin diff --git a/src/main/java/com/kingsrook/qbits/crm/CrmQBitProducer.java b/src/main/java/com/kingsrook/qbits/crm/CrmQBitProducer.java index cae9b61..0d07c9c 100644 --- a/src/main/java/com/kingsrook/qbits/crm/CrmQBitProducer.java +++ b/src/main/java/com/kingsrook/qbits/crm/CrmQBitProducer.java @@ -26,9 +26,12 @@ package com.kingsrook.qbits.crm; +import java.io.IOException; +import java.io.InputStream; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Properties; import com.kingsrook.qbits.crm.activities.customizers.ActivityLastDateCustomizer; import com.kingsrook.qbits.crm.activities.model.Activity; import com.kingsrook.qbits.crm.core.customizers.CurrencyRateDateCustomizer; @@ -86,12 +89,40 @@ public class CrmQBitProducer implements QBitMetaDataProducer { public static final String GROUP_ID = "com.kingsrook.qbits"; public static final String ARTIFACT_ID = "crm"; - public static final String VERSION = "0.2.0-SNAPSHOT"; + public static final String VERSION = loadVersion(); private CrmQBitConfig qBitConfig; + /******************************************************************************* + ** Read the artifact version from the Maven-filtered properties resource. + *******************************************************************************/ + private static String loadVersion() + { + try(InputStream inputStream = CrmQBitProducer.class.getClassLoader().getResourceAsStream("qbit-crm.properties")) + { + if(inputStream == null) + { + throw new IllegalStateException("Missing qbit-crm.properties; build with Maven to provide the artifact version"); + } + Properties properties = new Properties(); + properties.load(inputStream); + String version = properties.getProperty("version"); + if(version == null || version.isBlank() || version.contains("${")) + { + throw new IllegalStateException("Missing or unfiltered version in qbit-crm.properties; build with Maven to provide the artifact version"); + } + return (version); + } + catch(IOException e) + { + throw new IllegalStateException("Could not read artifact version from qbit-crm.properties", e); + } + } + + + /******************************************************************************* ** Produce the QBitMetaData for the CRM QBit. *******************************************************************************/ diff --git a/src/main/resources/qbit-crm.properties b/src/main/resources/qbit-crm.properties new file mode 100644 index 0000000..defbd48 --- /dev/null +++ b/src/main/resources/qbit-crm.properties @@ -0,0 +1 @@ +version=${project.version} diff --git a/src/test/java/com/kingsrook/qbits/crm/CrmPublicationHelpTest.java b/src/test/java/com/kingsrook/qbits/crm/CrmPublicationHelpTest.java index 9695626..1e68bfb 100644 --- a/src/test/java/com/kingsrook/qbits/crm/CrmPublicationHelpTest.java +++ b/src/test/java/com/kingsrook/qbits/crm/CrmPublicationHelpTest.java @@ -110,7 +110,7 @@ class CrmPublicationHelpTest extends BaseTest assertThat(HelpBundles.of(instance).getBundles()).singleElement().satisfies(bundle -> { assertThat(bundle.getId()).isEqualTo("qbit-crm"); - assertThat(bundle.getVersion()).isEqualTo(CrmQBitProducer.VERSION); + assertThat(bundle.getVersion()).isEqualTo(System.getProperty("qbit.artifactVersion")).isEqualTo(CrmQBitProducer.VERSION); assertThat(bundle.getLayer().name()).isEqualTo("QBIT"); }); HelpBundles.syncOnStartup(instance); diff --git a/src/test/java/com/kingsrook/qbits/crm/CrmQBitProducerTest.java b/src/test/java/com/kingsrook/qbits/crm/CrmQBitProducerTest.java index 114a105..24a237b 100644 --- a/src/test/java/com/kingsrook/qbits/crm/CrmQBitProducerTest.java +++ b/src/test/java/com/kingsrook/qbits/crm/CrmQBitProducerTest.java @@ -62,7 +62,7 @@ class CrmQBitProducerTest extends BaseTest assertThat(metaData).isNotNull(); assertThat(metaData.getGroupId()).isEqualTo(CrmQBitProducer.GROUP_ID); assertThat(metaData.getArtifactId()).isEqualTo(CrmQBitProducer.ARTIFACT_ID); - assertThat(metaData.getVersion()).isEqualTo(CrmQBitProducer.VERSION); + assertThat(metaData.getVersion()).isEqualTo(System.getProperty("qbit.artifactVersion")).isEqualTo(CrmQBitProducer.VERSION); } @@ -114,7 +114,7 @@ class CrmQBitProducerTest extends BaseTest { assertThat(CrmQBitProducer.GROUP_ID).isEqualTo("com.kingsrook.qbits"); assertThat(CrmQBitProducer.ARTIFACT_ID).isEqualTo("crm"); - assertThat(CrmQBitProducer.VERSION).isEqualTo("0.2.0-SNAPSHOT"); + assertThat(CrmQBitProducer.VERSION).isEqualTo(System.getProperty("qbit.artifactVersion")); } /*******************************************************************************