fix: qbit metadata version comes from the build #14

Merged
KofTwentyTwo merged 1 commits from fix/producer-version-from-build into develop 2026-10-15 06:42:57 +00:00
6 changed files with 51 additions and 1 deletions

No files matched your search

+3
View File
@@ -6,6 +6,9 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Fixed
- QBit metadata now reports the Maven artifact version, including release versions, from a filtered properties resource.
### Added
- Complete host-neutral in-app help bundle with live labels and core `HelpBundleAssertions` coverage; registered through QQQ 4.1.0-RC.7 `HelpBundles`, replacing the temporary loader.
- "Check channels" action on Registered Channels; readiness now writes the channel's Slack name, private, bot is member, archived, purpose and checked time back to the row.
+11
View File
@@ -127,6 +127,7 @@
<filtering>true</filtering>
<includes>
<include>help/*.yaml</include>
<include>qbit-slack.properties</include>
</includes>
</resource>
<resource>
@@ -134,10 +135,20 @@
<filtering>false</filtering>
<excludes>
<exclude>help/*.yaml</exclude>
<exclude>qbit-slack.properties</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables combine.children="append">
<qbit.artifactVersion>${project.version}</qbit.artifactVersion>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
@@ -21,8 +21,11 @@
package com.kingsrook.qbits.slack;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import com.kingsrook.qbits.slack.bridge.SlackOutboxMessagingProviderMetaData;
import com.kingsrook.qbits.slack.delivery.SlackAlerts;
import com.kingsrook.qbits.slack.metadata.SlackTables;
@@ -43,13 +46,41 @@ public class SlackQBitProducer implements QBitMetaDataProducer<SlackQBitConfig>
{
public static final String GROUP_ID = "com.kingsrook.qbits";
public static final String ARTIFACT_ID = "qbit-slack";
public static final String VERSION = "0.1.0";
public static final String VERSION = loadVersion();
private SlackQBitConfig qBitConfig;
private String namespace;
/*******************************************************************************
** Read the artifact version from the Maven-filtered properties resource.
*******************************************************************************/
private static String loadVersion()
{
try(InputStream inputStream = SlackQBitProducer.class.getClassLoader().getResourceAsStream("qbit-slack.properties"))
{
if(inputStream == null)
{
throw (new IllegalStateException("Missing qbit-slack.properties; build with Maven to supply 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-slack.properties; build with Maven"));
}
return (version);
}
catch(IOException e)
{
throw (new IllegalStateException("Could not read artifact version from qbit-slack.properties", e));
}
}
/*******************************************************************************
** Fluent setter for the config.
*******************************************************************************/
+1
View File
@@ -0,0 +1 @@
version=${project.version}
@@ -45,6 +45,8 @@ class SlackQBitProducerTest
SlackQBitProducer producer = new SlackQBitProducer().withQBitConfig(config).withNamespace("ns");
QBitMetaData metaData = producer.getQBitMetaData();
assertThat(System.getProperty("qbit.artifactVersion")).isNotBlank();
assertThat(metaData.getVersion()).isEqualTo(System.getProperty("qbit.artifactVersion")).isEqualTo(SlackQBitProducer.VERSION);
assertThat(metaData.getArtifactId()).isEqualTo("qbit-slack");
assertThat(metaData.getGroupId()).isEqualTo("com.kingsrook.qbits");
assertThat(producer.getNamespace()).isEqualTo("ns");
@@ -160,6 +160,8 @@ class SlackTablesGuardrailTest
var bundles = HelpBundles.of(instance).getBundles();
assertThat(bundles).hasSize(1);
assertThat(bundles.get(0).getId()).isEqualTo("qbit-slack");
assertThat(System.getProperty("qbit.artifactVersion")).isNotBlank();
assertThat(bundles.get(0).getVersion()).isEqualTo(System.getProperty("qbit.artifactVersion")).isEqualTo(SlackQBitProducer.VERSION);
for(String table : SlackTables.ALL)
{
assertThat(bundles.get(0).getEntries()).filteredOn(entry -> entry.getKey().equals("table:" + table + ";slot:help"))