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 ad0cc59..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()
@@ -63,28 +64,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"));
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<>();
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/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..bc3290e 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;
@@ -170,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)
@@ -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(