Compare commits

..

No commits in common. "b8a02dce9eebe3f9fff49285ff4e41d7ef50b096" and "0703d31e9d36b47a35c479df6b2542f67196253b" have entirely different histories.

10 changed files with 74 additions and 87 deletions

View file

@ -1,6 +1,6 @@
name: bld-ci name: bld-ci
on: [push, pull_request, workflow_dispatch] on: [ push, pull_request, workflow_dispatch ]
jobs: jobs:
build-bld-project: build-bld-project:
@ -8,8 +8,8 @@ jobs:
strategy: strategy:
matrix: matrix:
java-version: [17, 21, 23] java-version: [ 17, 21, 22 ]
kotlin-version: [1.9.24, 2.0.21] kotlin-version: [ 1.19.24, 2.0.0 ]
steps: steps:
- name: Checkout source repository - name: Checkout source repository

View file

@ -7,9 +7,9 @@
<!-- BEST PRACTICES --> <!-- BEST PRACTICES -->
<rule ref="category/java/bestpractices.xml"> <rule ref="category/java/bestpractices.xml">
<exclude name="AvoidPrintStackTrace"/> <exclude name="AvoidPrintStackTrace"/>
<exclude name="JUnit4TestShouldUseTestAnnotation"/>
<exclude name="JUnitTestContainsTooManyAsserts"/>
<exclude name="GuardLogStatement"/> <exclude name="GuardLogStatement"/>
<exclude name="UnitTestContainsTooManyAsserts"/>
<exclude name="UnitTestShouldUseTestAnnotation"/>
</rule> </rule>
<rule ref="category/java/bestpractices.xml/MissingOverride"> <rule ref="category/java/bestpractices.xml/MissingOverride">

View file

@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true bld.downloadExtensionSources=true
bld.downloadLocation= bld.downloadLocation=
bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1 bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1
bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.2 bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.1
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.sourceDirectories= bld.sourceDirectories=
bld.version=2.1.0 bld.version=2.1.0

View file

@ -34,13 +34,13 @@ public class ExampleBuild extends Project {
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES); repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES);
final var kotlin = version(2, 0, 21); final var kotlin = version(2, 0, 20);
scope(compile) scope(compile)
.include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin));
scope(test) scope(test)
.include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin)) .include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin))
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 3))) .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0)))
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 3))); .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0)));
// Include the Kotlin source directory when creating or publishing sources Java Archives // Include the Kotlin source directory when creating or publishing sources Java Archives
jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin")); jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin"));

View file

@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true bld.downloadExtensionSources=true
bld.downloadLocation= bld.downloadLocation=
bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.3 bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.3
bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.7 bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.5
bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.sourceDirectories= bld.sourceDirectories=
bld.version=2.1.0 bld.version=2.1.0

View file

@ -39,7 +39,6 @@ public class DokkaOperationBuild extends Project {
downloadSources = true; downloadSources = true;
autoDownloadPurge = true; autoDownloadPurge = true;
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS); repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS);
var dokka = version(1, 9, 20); var dokka = version(1, 9, 20);
@ -52,8 +51,8 @@ public class DokkaOperationBuild extends Project {
.include(dependency("org.jetbrains.dokka", "jekyll-plugin", dokka)) .include(dependency("org.jetbrains.dokka", "jekyll-plugin", dokka))
.include(dependency("com.uwyn.rife2", "bld", version(2, 1, 0))); .include(dependency("com.uwyn.rife2", "bld", version(2, 1, 0)));
scope(test) scope(test)
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 3))) .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0)))
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 3))) .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0)))
.include(dependency("org.assertj", "assertj-core", version(3, 26, 3))); .include(dependency("org.assertj", "assertj-core", version(3, 26, 3)));
javadocOperation() javadocOperation()
@ -64,26 +63,28 @@ public class DokkaOperationBuild extends Project {
publishOperation() publishOperation()
.repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2")) .repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2"))
.repository(repository("github"))
.info() .info()
.groupId("com.uwyn.rife2") .groupId("com.uwyn.rife2")
.artifactId(name) .artifactId(name)
.description("bld Dokka Extension") .description("bld Dokka Extension")
.url("https://github.com/rife2/bld-dokka") .url("https://github.com/rife2/bld-dokka")
.developer(new PublishDeveloper() .developer(
.id("ethauvin") new PublishDeveloper()
.name("Erik C. Thauvin") .id("ethauvin")
.email("erik@thauvin.net") .name("Erik C. Thauvin")
.url("https://erik.thauvin.net/") .email("erik@thauvin.net")
.url("https://erik.thauvin.net/")
) )
.license(new PublishLicense() .license(
.name("The Apache License, Version 2.0") new PublishLicense()
.url("https://www.apache.org/licenses/LICENSE-2.0.txt") .name("The Apache License, Version 2.0")
.url("https://www.apache.org/licenses/LICENSE-2.0.txt")
) )
.scm(new PublishScm() .scm(
.connection("scm:git:https://github.com/rife2/bld-dokka.git") new PublishScm()
.developerConnection("scm:git:git@github.com:rife2/bld-dokka.git") .connection("scm:git:https://github.com/rife2/bld-dokka.git")
.url("https://github.com/rife2/bld-dokka") .developerConnection("scm:git:git@github.com:rife2/bld-dokka.git")
.url("https://github.com/rife2/bld-dokka")
) )
.signKey(property("sign.key")) .signKey(property("sign.key"))
.signPassphrase(property("sign.passphrase")); .signPassphrase(property("sign.passphrase"));

View file

@ -45,13 +45,13 @@ import java.util.stream.Collectors;
@SuppressWarnings("PMD.AvoidThrowingRawExceptionTypes") @SuppressWarnings("PMD.AvoidThrowingRawExceptionTypes")
public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> { public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
public static final String SEMICOLON = ";"; public static final String SEMICOLON = ";";
private static final String GFM_PLUGIN_REGEXP = private final static String GFM_PLUGIN_REGEXP =
"^.*(dokka-base|analysis-kotlin-descriptors|gfm-plugin|freemarker).*\\.jar$"; "^.*(dokka-base|analysis-kotlin-descriptors|gfm-plugin|freemarker).*\\.jar$";
private static final String HTML_PLUGIN_REGEXP = private final static String HTML_PLUGIN_REGEXP =
"^.*(dokka-base|analysis-kotlin-descriptors|kotlinx-html-jvm|freemarker).*\\.jar$"; "^.*(dokka-base|analysis-kotlin-descriptors|kotlinx-html-jvm|freemarker).*\\.jar$";
private static final String JAVADOC_PLUGIN_REGEXP = private final static String JAVADOC_PLUGIN_REGEXP =
"^.*(dokka-base|analysis-kotlin-descriptors|javadoc-plugin|kotlin-as-java-plugin|korte-jvm).*\\.jar$"; "^.*(dokka-base|analysis-kotlin-descriptors|javadoc-plugin|kotlin-as-java-plugin|korte-jvm).*\\.jar$";
private static final String JEKYLL_PLUGIN_REGEXP = private final static String JEKYLL_PLUGIN_REGEXP =
"^.*(dokka-base|analysis-kotlin-descriptors|jekyll-plugin|gfm-plugin|freemarker).*\\.jar$"; "^.*(dokka-base|analysis-kotlin-descriptors|jekyll-plugin|gfm-plugin|freemarker).*\\.jar$";
private final Logger LOGGER = Logger.getLogger(DokkaOperation.class.getName()); private final Logger LOGGER = Logger.getLogger(DokkaOperation.class.getName());
private final Map<String, String> globalLinks_ = new ConcurrentHashMap<>(); private final Map<String, String> globalLinks_ = new ConcurrentHashMap<>();

View file

@ -24,7 +24,7 @@ import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -33,16 +33,15 @@ import java.util.stream.Collectors;
* @author <a href="https://erik.thauvin.net/">Erik C. Thauvin</a> * @author <a href="https://erik.thauvin.net/">Erik C. Thauvin</a>
* @since 1.0 * @since 1.0
*/ */
@SuppressWarnings("PMD.UseConcurrentHashMap")
public class SourceSet { public class SourceSet {
private final Collection<File> classpath_ = new ArrayList<>(); private final Collection<File> classpath_ = new ArrayList<>();
private final Map<String, String> dependentSourceSets_ = new ConcurrentSkipListMap<>(); private final Map<String, String> dependentSourceSets_ = new ConcurrentHashMap<>();
private final Collection<DocumentedVisibility> documentedVisibilities_ = new ArrayList<>(); private final Collection<DocumentedVisibility> documentedVisibilities_ = new ArrayList<>();
private final Map<String, String> externalDocumentationLinks_ = new ConcurrentSkipListMap<>(); private final Map<String, String> externalDocumentationLinks_ = new ConcurrentHashMap<>();
private final Collection<File> includes_ = new ArrayList<>(); private final Collection<File> includes_ = new ArrayList<>();
private final Collection<String> perPackageOptions_ = new ArrayList<>(); private final Collection<String> perPackageOptions_ = new ArrayList<>();
private final Collection<File> samples_ = new ArrayList<>(); private final Collection<File> samples_ = new ArrayList<>();
private final Map<String, String> srcLinks_ = new ConcurrentSkipListMap<>(); private final Map<String, String> srcLinks_ = new ConcurrentHashMap<>();
private final Collection<File> src_ = new ArrayList<>(); private final Collection<File> src_ = new ArrayList<>();
private final Collection<File> suppressedFiles_ = new ArrayList<>(); private final Collection<File> suppressedFiles_ = new ArrayList<>();
private AnalysisPlatform analysisPlatform_; private AnalysisPlatform analysisPlatform_;

View file

@ -16,7 +16,6 @@
package rife.bld.extension; package rife.bld.extension;
import org.assertj.core.api.AutoCloseableSoftAssertions;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import rife.bld.blueprints.BaseProjectBlueprint; import rife.bld.blueprints.BaseProjectBlueprint;
@ -108,27 +107,23 @@ class DokkaOperationTest {
))) )))
.suppressInheritedMembers(true); .suppressInheritedMembers(true);
try (var softly = new AutoCloseableSoftAssertions()) { assertThat(op.globalLinks()).as("globalLinks").hasSize(2);
softly.assertThat(op.globalLinks()).as("globalLinks").hasSize(2); assertThat(op.globalPackageOptions()).as("globalPackageOptions").hasSize(4);
softly.assertThat(op.globalPackageOptions()).as("globalPackageOptions").hasSize(4); assertThat(op.globalSrcLink()).as("globalSrcLink").hasSize(4);
softly.assertThat(op.globalSrcLink()).as("globalSrcLink").hasSize(4); assertThat(op.includes()).as("includes").hasSize(4);
softly.assertThat(op.includes()).as("includes").hasSize(4); assertThat(op.pluginConfigurations()).as("pluginConfigurations").hasSize(3);
softly.assertThat(op.pluginConfigurations()).as("pluginConfigurations").hasSize(3); assertThat(op.pluginsClasspath()).as("pluginsClasspath").hasSize(9);
softly.assertThat(op.pluginsClasspath()).as("pluginsClasspath").hasSize(9);
}
var params = op.executeConstructProcessCommandList(); var params = op.executeConstructProcessCommandList();
try (var softly = new AutoCloseableSoftAssertions()) { for (var p : args) {
for (var p : args) { var found = false;
var found = false; for (var a : params) {
for (var a : params) { if (a.startsWith(p)) {
if (a.startsWith(p)) { found = true;
found = true; break;
break;
}
} }
softly.assertThat(found).as(p + " not found.").isTrue();
} }
assertThat(found).as(p + " not found.").isTrue();
} }
var path = EXAMPLES.getAbsolutePath(); var path = EXAMPLES.getAbsolutePath();
@ -162,17 +157,14 @@ class DokkaOperationTest {
assertThat(params).hasSize(matches.size()); assertThat(params).hasSize(matches.size());
try (var softly = new AutoCloseableSoftAssertions()) { IntStream.range(0, params.size()).forEach(i -> {
IntStream.range(0, params.size()).forEach(i -> { if (params.get(i).contains(".jar;")) {
if (params.get(i).contains(".jar;")) { var jars = params.get(i).split(";");
var jars = params.get(i).split(";"); Arrays.stream(jars).forEach(jar -> assertThat(matches.get(i)).as(matches.get(i)).contains(jar));
Arrays.stream(jars).forEach(jar -> } else {
softly.assertThat(matches.get(i)).as(matches.get(i)).contains(jar)); assertThat(params.get(i)).as(params.get(i)).isEqualTo(matches.get(i));
} else { }
softly.assertThat(params.get(i)).as(params.get(i)).isEqualTo(matches.get(i)); });
}
});
}
} }
@Test @Test

View file

@ -16,7 +16,6 @@
package rife.bld.extension.dokka; package rife.bld.extension.dokka;
import org.assertj.core.api.AutoCloseableSoftAssertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.io.File; import java.io.File;
@ -171,7 +170,7 @@ class SourceSetTest {
var matches = List.of( var matches = List.of(
"-classpath", localPath(PATH_1, PATH_2), "-classpath", localPath(PATH_1, PATH_2),
"-dependentSourceSets", "set1/set2;set3/set4", "-dependentSourceSets", "set1/set2;set3/set4",
"-externalDocumentationLinks", "link1^link2^^link3^link4", "-externalDocumentationLinks", "link3^link4^^link1^link2",
"-perPackageOptions", OPTION_1 + ';' + OPTION_2, "-perPackageOptions", OPTION_1 + ';' + OPTION_2,
"-samples", localPath(SAMPLES_1, SAMPLES_2, SAMPLES_3), "-samples", localPath(SAMPLES_1, SAMPLES_2, SAMPLES_3),
"-suppressedFiles", localPath(SUP_1, SUP_2, SUP_3) "-suppressedFiles", localPath(SUP_1, SUP_2, SUP_3)
@ -226,32 +225,28 @@ class SourceSetTest {
.srcLink(Path.of(PATH_3), "remote3", "#suffix3") .srcLink(Path.of(PATH_3), "remote3", "#suffix3")
.suppressedFiles(SUP_1, SUP_2); .suppressedFiles(SUP_1, SUP_2);
try (var softly = new AutoCloseableSoftAssertions()) { assertThat(sourceSet.classpath()).as("classpath").hasSize(2);
softly.assertThat(sourceSet.classpath()).as("classpath").hasSize(2); assertThat(sourceSet.dependentSourceSets()).as("dependentSourceSets").hasSize(2);
softly.assertThat(sourceSet.dependentSourceSets()).as("dependentSourceSets").hasSize(2); assertThat(sourceSet.documentedVisibilities()).as("documentedVisibilities").hasSize(2);
softly.assertThat(sourceSet.documentedVisibilities()).as("documentedVisibilities").hasSize(2); assertThat(sourceSet.externalDocumentationLinks()).as("externalDocumentationLinks").hasSize(2);
softly.assertThat(sourceSet.externalDocumentationLinks()).as("externalDocumentationLinks").hasSize(2); assertThat(sourceSet.includes()).as("includes").hasSize(4);
softly.assertThat(sourceSet.includes()).as("includes").hasSize(4); assertThat(sourceSet.perPackageOptions()).as("perPackageOptions").hasSize(2);
softly.assertThat(sourceSet.perPackageOptions()).as("perPackageOptions").hasSize(2); assertThat(sourceSet.samples()).as("samples").hasSize(2);
softly.assertThat(sourceSet.samples()).as("samples").hasSize(2); assertThat(sourceSet.src()).as("src").hasSize(4);
softly.assertThat(sourceSet.src()).as("src").hasSize(4); assertThat(sourceSet.srcLinks()).as("srcLinks").hasSize(3);
softly.assertThat(sourceSet.srcLinks()).as("srcLinks").hasSize(3); assertThat(sourceSet.suppressedFiles()).as("suppressedFiles").hasSize(2);
softly.assertThat(sourceSet.suppressedFiles()).as("suppressedFiles").hasSize(2);
}
var params = sourceSet.args(); var params = sourceSet.args();
try (var softly = new AutoCloseableSoftAssertions()) { for (var p : args) {
for (var p : args) { var found = false;
var found = false; for (var a : params) {
for (var a : params) { if (a.startsWith(p)) {
if (a.startsWith(p)) { found = true;
found = true; break;
break;
}
} }
softly.assertThat(found).as(p + " not found.").isTrue();
} }
assertThat(found).as(p + " not found.").isTrue();
} }
var matches = List.of( var matches = List.of(