From eb1657c2be62fb493adde954330a70eebd72026a Mon Sep 17 00:00:00 2001 From: Tom van Dijk <18gatenmaker6@gmail.com> Date: Wed, 18 Jun 2025 13:18:24 +0200 Subject: [PATCH 1/5] chore: use `gradle-application-plugin` This prevents the use of in-house launch/dependency copy scripts. Makes it much easier to package for distros as they can just install whatever `gradle distTar` outputs. GAP: https://docs.gradle.org/current/userguide/application_plugin.html --- Dockerfile | 13 +++++++++---- build.gradle | 32 ++++++-------------------------- etc/structurizr.bat | 4 ---- etc/structurizr.sh | 19 ------------------- 4 files changed, 15 insertions(+), 53 deletions(-) delete mode 100644 etc/structurizr.bat delete mode 100755 etc/structurizr.sh diff --git a/Dockerfile b/Dockerfile index ca441d4..db3fcf8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,16 @@ FROM eclipse-temurin:21.0.7_6-jre-noble -RUN apt-get update && apt-get install -y unzip && apt install -y graphviz && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y libarchive-tools && apt install -y graphviz && rm -rf /var/lib/apt/lists/* COPY build/distributions/structurizr-cli.zip /tmp -RUN unzip /tmp/structurizr-cli.zip -d /usr/local/structurizr-cli && chmod +x /usr/local/structurizr-cli/structurizr.sh +ARG APPDIR=/usr/local/structurizr-cli -WORKDIR /usr/local/structurizr +RUN </dev/null 2>&1 && pwd)" - -# Recursively resolve symlinks -while [[ -L "$SCRIPT_PATH" ]]; do - # Resolve the symlink to it's target path. - SCRIPT_PATH=$(readlink "$SCRIPT_PATH") - # If the target path is relative, prepend the symlink's source dir. - [[ "$SCRIPT_PATH" == /* ]] || SCRIPT_PATH="$SCRIPT_DIR/$SCRIPT_PATH" - # Update the script dir, resolving dir symlinks in the process. - SCRIPT_DIR="$(cd -P "$( dirname "$SCRIPT_PATH" )" >/dev/null 2>&1 && pwd)" -done - -java -cp "$SCRIPT_DIR:$SCRIPT_DIR"/lib/* com.structurizr.cli.StructurizrCliApplication "$@" From 24be5eeec893df5261100913c4e51ca0bd100689 Mon Sep 17 00:00:00 2001 From: Tom van Dijk <18gatenmaker6@gmail.com> Date: Wed, 18 Jun 2025 15:55:43 +0200 Subject: [PATCH 2/5] fix: set JDK target correctly --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 0ed14ee..6422627 100644 --- a/build.gradle +++ b/build.gradle @@ -9,8 +9,8 @@ description = 'Structurizr CLI' group = 'com.structurizr' version = '' -sourceCompatibility = 17 -targetCompatibility = 17 +sourceCompatibility = 21 +targetCompatibility = 21 repositories { mavenCentral() From 2cb1d86c59f210ce32211395570e8dccf138df16 Mon Sep 17 00:00:00 2001 From: Tom van Dijk <18gatenmaker6@gmail.com> Date: Wed, 18 Jun 2025 16:37:54 +0200 Subject: [PATCH 3/5] chore: remove unused `git.commit` property --- src/main/java/com/structurizr/cli/util/Version.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/main/java/com/structurizr/cli/util/Version.java b/src/main/java/com/structurizr/cli/util/Version.java index ecb1ea8..a0f5989 100644 --- a/src/main/java/com/structurizr/cli/util/Version.java +++ b/src/main/java/com/structurizr/cli/util/Version.java @@ -10,11 +10,9 @@ public class Version { private static final String BUILD_VERSION_KEY = "build.number"; private static final String BUILD_TIMESTAMP_KEY = "build.timestamp"; - private static final String GIT_COMMIT_KEY = "git.commit"; private static String version = ""; private static Date buildTimestamp = new Date(); - private static String gitCommit; static { try { @@ -25,7 +23,6 @@ public class Version { buildProperties.load(in); version = buildProperties.getProperty(BUILD_VERSION_KEY); buildTimestamp = format.parse(buildProperties.getProperty(BUILD_TIMESTAMP_KEY)); - gitCommit = buildProperties.getProperty(GIT_COMMIT_KEY); in.close(); } } catch (Exception e) { @@ -41,8 +38,4 @@ public Date getBuildTimestamp() { return buildTimestamp; } - public String getGitCommit() { - return gitCommit; - } - -} \ No newline at end of file +} From 3260d8622a9cf6197d6ab5d9440087dcaac3fbb9 Mon Sep 17 00:00:00 2001 From: Tom van Dijk <18gatenmaker6@gmail.com> Date: Wed, 18 Jun 2025 16:11:03 +0200 Subject: [PATCH 4/5] fix: set build data correctly --- build.gradle | 29 +++++++++++++++++++++++++++++ src/main/resources/build.properties | 4 ++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 6422627..36e8f14 100644 --- a/build.gradle +++ b/build.gradle @@ -45,12 +45,41 @@ test { useJUnitPlatform() } +def command(String... command) { + try { + return providers.exec { + commandLine command + }.standardOutput.asText.get().trim() + } + catch (e) { + e.printStackTrace(); + return ""; + } +} + +def getVersionName = { -> + command 'git', 'describe', '--tags', '--dirty' +} + +def getTimestamp = { -> + command 'date', '--utc', '+%FT%H:%M:%SZ' +} + sourceSets.main.resources { srcDirs = ['src/main/resources'] include 'build.properties' include 'static.zip' } +processResources { + filesMatching('**/*.properties') { + filter { line -> + line.replaceAll('@BUILD_NUMBER@', getVersionName()) + .replaceAll('@BUILD_DATE@', getTimestamp()) + } + } +} + application { mainClass = 'com.structurizr.cli.StructurizrCliApplication' } diff --git a/src/main/resources/build.properties b/src/main/resources/build.properties index bdff667..2d8390c 100644 --- a/src/main/resources/build.properties +++ b/src/main/resources/build.properties @@ -1,2 +1,2 @@ -build.number=2023.12.29.0 -build.timestamp=2023-12-29T13:33:22Z +build.number=@BUILD_NUMBER@ +build.timestamp=@BUILD_DATE@ From 1a11940d089a8d70d6e298660c6f5db638cc8d00 Mon Sep 17 00:00:00 2001 From: Tom van Dijk <18gatenmaker6@gmail.com> Date: Wed, 18 Jun 2025 16:17:50 +0200 Subject: [PATCH 5/5] chore: wrap compatibility into java block --- build.gradle | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 36e8f14..45ea663 100644 --- a/build.gradle +++ b/build.gradle @@ -9,8 +9,10 @@ description = 'Structurizr CLI' group = 'com.structurizr' version = '' -sourceCompatibility = 21 -targetCompatibility = 21 +java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} repositories { mavenCentral()