From 0983f323a205a7c14170d2aa1163d9ebecac08cb Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 27 Oct 2024 16:17:18 -0700 Subject: [PATCH 1/5] Added GitHub repository --- .../bld/extension/DokkaOperationBuild.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index ad0cc59..165b251 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -63,28 +63,26 @@ public class DokkaOperationBuild extends Project { publishOperation() .repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2")) + .repository(repository("github")) .info() .groupId("com.uwyn.rife2") .artifactId(name) .description("bld Dokka Extension") .url("https://github.com/rife2/bld-dokka") - .developer( - new PublishDeveloper() - .id("ethauvin") - .name("Erik C. Thauvin") - .email("erik@thauvin.net") - .url("https://erik.thauvin.net/") + .developer(new PublishDeveloper() + .id("ethauvin") + .name("Erik C. Thauvin") + .email("erik@thauvin.net") + .url("https://erik.thauvin.net/") ) - .license( - new PublishLicense() - .name("The Apache License, Version 2.0") - .url("https://www.apache.org/licenses/LICENSE-2.0.txt") + .license(new PublishLicense() + .name("The Apache License, Version 2.0") + .url("https://www.apache.org/licenses/LICENSE-2.0.txt") ) - .scm( - new PublishScm() - .connection("scm:git:https://github.com/rife2/bld-dokka.git") - .developerConnection("scm:git:git@github.com:rife2/bld-dokka.git") - .url("https://github.com/rife2/bld-dokka") + .scm(new PublishScm() + .connection("scm:git:https://github.com/rife2/bld-dokka.git") + .developerConnection("scm:git:git@github.com:rife2/bld-dokka.git") + .url("https://github.com/rife2/bld-dokka") ) .signKey(property("sign.key")) .signPassphrase(property("sign.passphrase")); From d797c515bb223c832b38bdbb74a0bda24574612a Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 27 Oct 2024 16:17:34 -0700 Subject: [PATCH 2/5] Added soft assertions --- .../bld/extension/DokkaOperationTest.java | 50 +++++++++++-------- .../bld/extension/dokka/SourceSetTest.java | 39 ++++++++------- 2 files changed, 51 insertions(+), 38 deletions(-) diff --git a/src/test/java/rife/bld/extension/DokkaOperationTest.java b/src/test/java/rife/bld/extension/DokkaOperationTest.java index ca19b54..baa27a3 100644 --- a/src/test/java/rife/bld/extension/DokkaOperationTest.java +++ b/src/test/java/rife/bld/extension/DokkaOperationTest.java @@ -16,6 +16,7 @@ package rife.bld.extension; +import org.assertj.core.api.AutoCloseableSoftAssertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import rife.bld.blueprints.BaseProjectBlueprint; @@ -107,23 +108,27 @@ class DokkaOperationTest { ))) .suppressInheritedMembers(true); - assertThat(op.globalLinks()).as("globalLinks").hasSize(2); - assertThat(op.globalPackageOptions()).as("globalPackageOptions").hasSize(4); - assertThat(op.globalSrcLink()).as("globalSrcLink").hasSize(4); - assertThat(op.includes()).as("includes").hasSize(4); - assertThat(op.pluginConfigurations()).as("pluginConfigurations").hasSize(3); - assertThat(op.pluginsClasspath()).as("pluginsClasspath").hasSize(9); + try (var softly = new AutoCloseableSoftAssertions()) { + softly.assertThat(op.globalLinks()).as("globalLinks").hasSize(2); + softly.assertThat(op.globalPackageOptions()).as("globalPackageOptions").hasSize(4); + softly.assertThat(op.globalSrcLink()).as("globalSrcLink").hasSize(4); + softly.assertThat(op.includes()).as("includes").hasSize(4); + softly.assertThat(op.pluginConfigurations()).as("pluginConfigurations").hasSize(3); + softly.assertThat(op.pluginsClasspath()).as("pluginsClasspath").hasSize(9); + } var params = op.executeConstructProcessCommandList(); - for (var p : args) { - var found = false; - for (var a : params) { - if (a.startsWith(p)) { - found = true; - break; + try (var softly = new AutoCloseableSoftAssertions()) { + for (var p : args) { + var found = false; + for (var a : params) { + if (a.startsWith(p)) { + found = true; + break; + } } + softly.assertThat(found).as(p + " not found.").isTrue(); } - assertThat(found).as(p + " not found.").isTrue(); } var path = EXAMPLES.getAbsolutePath(); @@ -157,14 +162,17 @@ class DokkaOperationTest { assertThat(params).hasSize(matches.size()); - IntStream.range(0, params.size()).forEach(i -> { - if (params.get(i).contains(".jar;")) { - var jars = params.get(i).split(";"); - Arrays.stream(jars).forEach(jar -> assertThat(matches.get(i)).as(matches.get(i)).contains(jar)); - } else { - assertThat(params.get(i)).as(params.get(i)).isEqualTo(matches.get(i)); - } - }); + try (var softly = new AutoCloseableSoftAssertions()) { + IntStream.range(0, params.size()).forEach(i -> { + if (params.get(i).contains(".jar;")) { + var jars = params.get(i).split(";"); + Arrays.stream(jars).forEach(jar -> + softly.assertThat(matches.get(i)).as(matches.get(i)).contains(jar)); + } else { + softly.assertThat(params.get(i)).as(params.get(i)).isEqualTo(matches.get(i)); + } + }); + } } @Test diff --git a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java index 0927bd8..971e603 100644 --- a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java +++ b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java @@ -16,6 +16,7 @@ package rife.bld.extension.dokka; +import org.assertj.core.api.AutoCloseableSoftAssertions; import org.junit.jupiter.api.Test; import java.io.File; @@ -225,28 +226,32 @@ class SourceSetTest { .srcLink(Path.of(PATH_3), "remote3", "#suffix3") .suppressedFiles(SUP_1, SUP_2); - assertThat(sourceSet.classpath()).as("classpath").hasSize(2); - assertThat(sourceSet.dependentSourceSets()).as("dependentSourceSets").hasSize(2); - assertThat(sourceSet.documentedVisibilities()).as("documentedVisibilities").hasSize(2); - assertThat(sourceSet.externalDocumentationLinks()).as("externalDocumentationLinks").hasSize(2); - assertThat(sourceSet.includes()).as("includes").hasSize(4); - assertThat(sourceSet.perPackageOptions()).as("perPackageOptions").hasSize(2); - assertThat(sourceSet.samples()).as("samples").hasSize(2); - assertThat(sourceSet.src()).as("src").hasSize(4); - assertThat(sourceSet.srcLinks()).as("srcLinks").hasSize(3); - assertThat(sourceSet.suppressedFiles()).as("suppressedFiles").hasSize(2); + try (var softly = new AutoCloseableSoftAssertions()) { + softly.assertThat(sourceSet.classpath()).as("classpath").hasSize(2); + softly.assertThat(sourceSet.dependentSourceSets()).as("dependentSourceSets").hasSize(2); + softly.assertThat(sourceSet.documentedVisibilities()).as("documentedVisibilities").hasSize(2); + softly.assertThat(sourceSet.externalDocumentationLinks()).as("externalDocumentationLinks").hasSize(2); + softly.assertThat(sourceSet.includes()).as("includes").hasSize(4); + softly.assertThat(sourceSet.perPackageOptions()).as("perPackageOptions").hasSize(2); + softly.assertThat(sourceSet.samples()).as("samples").hasSize(2); + softly.assertThat(sourceSet.src()).as("src").hasSize(4); + softly.assertThat(sourceSet.srcLinks()).as("srcLinks").hasSize(3); + softly.assertThat(sourceSet.suppressedFiles()).as("suppressedFiles").hasSize(2); + } var params = sourceSet.args(); - for (var p : args) { - var found = false; - for (var a : params) { - if (a.startsWith(p)) { - found = true; - break; + try (var softly = new AutoCloseableSoftAssertions()) { + for (var p : args) { + var found = false; + for (var a : params) { + if (a.startsWith(p)) { + found = true; + break; + } } + softly.assertThat(found).as(p + " not found.").isTrue(); } - assertThat(found).as(p + " not found.").isTrue(); } var matches = List.of( From ca811b1469918efd06e67d55f81f871debfda7a0 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 27 Oct 2024 16:22:57 -0700 Subject: [PATCH 3/5] Updated dependencies Bumped JUnit version to 5.11.3 Bumped PMD extension version to 1.1.7 Bumped JDK to version 23 (GitHub CI Workflow) Bumped Kotlin to version 2.0.21 Bumped Kotlin extension to version 1.0.2 --- .github/workflows/bld.yml | 6 +++--- config/pmd.xml | 4 ++-- examples/lib/bld/bld-wrapper.properties | 2 +- examples/src/bld/java/com/example/ExampleBuild.java | 6 +++--- lib/bld/bld-wrapper.properties | 2 +- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 5 +++-- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml index aa4fa67..4df475f 100644 --- a/.github/workflows/bld.yml +++ b/.github/workflows/bld.yml @@ -1,6 +1,6 @@ name: bld-ci -on: [ push, pull_request, workflow_dispatch ] +on: [push, pull_request, workflow_dispatch] jobs: build-bld-project: @@ -8,8 +8,8 @@ jobs: strategy: matrix: - java-version: [ 17, 21, 22 ] - kotlin-version: [ 1.19.24, 2.0.0 ] + java-version: [17, 21, 23] + kotlin-version: [1.9.24, 2.0.21] steps: - name: Checkout source repository diff --git a/config/pmd.xml b/config/pmd.xml index 3d3203c..2641880 100644 --- a/config/pmd.xml +++ b/config/pmd.xml @@ -7,9 +7,9 @@ - - + + diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index f8a4f28..6bfa1c8 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1 -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.1 +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.2 bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.1.0 diff --git a/examples/src/bld/java/com/example/ExampleBuild.java b/examples/src/bld/java/com/example/ExampleBuild.java index 1e6c71b..fb250a3 100644 --- a/examples/src/bld/java/com/example/ExampleBuild.java +++ b/examples/src/bld/java/com/example/ExampleBuild.java @@ -34,13 +34,13 @@ public class ExampleBuild extends Project { repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES); - final var kotlin = version(2, 0, 20); + final var kotlin = version(2, 0, 21); scope(compile) .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); scope(test) .include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin)) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0))); + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 3))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 3))); // Include the Kotlin source directory when creating or publishing sources Java Archives jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin")); diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index 5d0bba4..196e2c9 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.3 -bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.5 +bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.7 bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.1.0 diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 165b251..fe8a40f 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -39,6 +39,7 @@ public class DokkaOperationBuild extends Project { downloadSources = true; autoDownloadPurge = true; + repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS); var dokka = version(1, 9, 20); @@ -51,8 +52,8 @@ public class DokkaOperationBuild extends Project { .include(dependency("org.jetbrains.dokka", "jekyll-plugin", dokka)) .include(dependency("com.uwyn.rife2", "bld", version(2, 1, 0))); scope(test) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0))) + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 3))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 3))) .include(dependency("org.assertj", "assertj-core", version(3, 26, 3))); javadocOperation() From aa8d50d4cb8d8b3a033153218db03dc5ff69902c Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 27 Oct 2024 16:23:21 -0700 Subject: [PATCH 4/5] Minor cleanups --- src/main/java/rife/bld/extension/DokkaOperation.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/rife/bld/extension/DokkaOperation.java b/src/main/java/rife/bld/extension/DokkaOperation.java index 05cbcbc..5531bcf 100644 --- a/src/main/java/rife/bld/extension/DokkaOperation.java +++ b/src/main/java/rife/bld/extension/DokkaOperation.java @@ -45,13 +45,13 @@ import java.util.stream.Collectors; @SuppressWarnings("PMD.AvoidThrowingRawExceptionTypes") public class DokkaOperation extends AbstractProcessOperation { public static final String SEMICOLON = ";"; - private final static String GFM_PLUGIN_REGEXP = + private static final String GFM_PLUGIN_REGEXP = "^.*(dokka-base|analysis-kotlin-descriptors|gfm-plugin|freemarker).*\\.jar$"; - private final static String HTML_PLUGIN_REGEXP = + private static final String HTML_PLUGIN_REGEXP = "^.*(dokka-base|analysis-kotlin-descriptors|kotlinx-html-jvm|freemarker).*\\.jar$"; - private final static String JAVADOC_PLUGIN_REGEXP = + private static final String JAVADOC_PLUGIN_REGEXP = "^.*(dokka-base|analysis-kotlin-descriptors|javadoc-plugin|kotlin-as-java-plugin|korte-jvm).*\\.jar$"; - private final static String JEKYLL_PLUGIN_REGEXP = + private static final String JEKYLL_PLUGIN_REGEXP = "^.*(dokka-base|analysis-kotlin-descriptors|jekyll-plugin|gfm-plugin|freemarker).*\\.jar$"; private final Logger LOGGER = Logger.getLogger(DokkaOperation.class.getName()); private final Map globalLinks_ = new ConcurrentHashMap<>(); From b8a02dce9eebe3f9fff49285ff4e41d7ef50b096 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 27 Oct 2024 16:54:11 -0700 Subject: [PATCH 5/5] Changed to ConcurrentSkipListMap to preserve order --- src/main/java/rife/bld/extension/dokka/SourceSet.java | 9 +++++---- .../java/rife/bld/extension/dokka/SourceSetTest.java | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/rife/bld/extension/dokka/SourceSet.java b/src/main/java/rife/bld/extension/dokka/SourceSet.java index 4062a1e..4e31c5b 100644 --- a/src/main/java/rife/bld/extension/dokka/SourceSet.java +++ b/src/main/java/rife/bld/extension/dokka/SourceSet.java @@ -24,7 +24,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentSkipListMap; import java.util.stream.Collectors; /** @@ -33,15 +33,16 @@ import java.util.stream.Collectors; * @author Erik C. Thauvin * @since 1.0 */ +@SuppressWarnings("PMD.UseConcurrentHashMap") public class SourceSet { private final Collection classpath_ = new ArrayList<>(); - private final Map dependentSourceSets_ = new ConcurrentHashMap<>(); + private final Map dependentSourceSets_ = new ConcurrentSkipListMap<>(); private final Collection documentedVisibilities_ = new ArrayList<>(); - private final Map externalDocumentationLinks_ = new ConcurrentHashMap<>(); + private final Map externalDocumentationLinks_ = new ConcurrentSkipListMap<>(); private final Collection includes_ = new ArrayList<>(); private final Collection perPackageOptions_ = new ArrayList<>(); private final Collection samples_ = new ArrayList<>(); - private final Map srcLinks_ = new ConcurrentHashMap<>(); + private final Map srcLinks_ = new ConcurrentSkipListMap<>(); private final Collection src_ = new ArrayList<>(); private final Collection suppressedFiles_ = new ArrayList<>(); private AnalysisPlatform analysisPlatform_; diff --git a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java index 971e603..bc3290e 100644 --- a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java +++ b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java @@ -171,7 +171,7 @@ class SourceSetTest { var matches = List.of( "-classpath", localPath(PATH_1, PATH_2), "-dependentSourceSets", "set1/set2;set3/set4", - "-externalDocumentationLinks", "link3^link4^^link1^link2", + "-externalDocumentationLinks", "link1^link2^^link3^link4", "-perPackageOptions", OPTION_1 + ';' + OPTION_2, "-samples", localPath(SAMPLES_1, SAMPLES_2, SAMPLES_3), "-suppressedFiles", localPath(SUP_1, SUP_2, SUP_3)