diff --git a/README.md b/README.md index 8461cc7a8..43b15c837 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ framework. ###### Gradle ``` -testImplementation 'com.tngtech.archunit:archunit:1.4.2' +testImplementation 'com.tngtech.archunit:archunit:1.5.0' ``` ###### Maven @@ -26,7 +26,7 @@ testImplementation 'com.tngtech.archunit:archunit:1.4.2' com.tngtech.archunit archunit - 1.4.2 + 1.5.0 test ``` diff --git a/build-steps/release/test-release.gradle b/build-steps/release/test-release.gradle index 7024ad9a4..2afa88200 100644 --- a/build-steps/release/test-release.gradle +++ b/build-steps/release/test-release.gradle @@ -1,7 +1,7 @@ apply from: scriptRelativePath(this, 'vcs-utils.gradle') apply from: scriptRelativePath(this, 'archunit-examples-utils.gradle') -task testRelease() { +tasks.register('testRelease') { File testReleaseDir = new File(project.buildDir, 'test-release') def configureStagingRepository = { @@ -31,7 +31,7 @@ task testRelease() { }.getFiles().collect { it.name.replaceAll(/\.java$/, '') } def outputStream = new ByteArrayOutputStream() - exec { + project.services.get(ExecOperations).exec { workingDir testReleaseDir commandLine './gradlew', ":${exampleProjectName}:build", '-P', "sonatypeUsername=${project.getProperty('sonatypeUsername')}", '-P', "sonatypePassword=${project.getProperty('sonatypePassword')}" ignoreExitValue true diff --git a/buildSrc/src/main/groovy/archunit.java-release-check-conventions.gradle b/buildSrc/src/main/groovy/archunit.java-release-check-conventions.gradle index 4a97f4b27..dfc3e7659 100644 --- a/buildSrc/src/main/groovy/archunit.java-release-check-conventions.gradle +++ b/buildSrc/src/main/groovy/archunit.java-release-check-conventions.gradle @@ -1,5 +1,3 @@ -import groovy.xml.XmlSlurper - import java.nio.file.Files import java.util.jar.JarFile @@ -7,33 +5,34 @@ plugins { id 'archunit.java-artifact-check-conventions' } -task ensureReleaseCheckUpToDate { - doFirst { - def mavenProject = new XmlSlurper().parseText(getExpectedPomFileContent()) - def releaseCheckDependencies = mavenProject.dependencies.dependency - .findAll { it.groupId != 'com.tngtech.archunit' } - .collect { - [groupId: it.groupId.toString(), artifactId: it.artifactId.toString(), version: it.version.toString()] - } +ext.getExpectedPomFileContent = { + getClass().getResourceAsStream("release_check/${project.name}.pom").text.replace('${archunit.version}', version).stripIndent() +} + +ext.comparePom = { String actual -> + println "Verifying correct POM of ${project.name}" - releaseCheckDependencies.each { releaseCheckDependency -> - VersionCatalog versionCatalog = versionCatalogs.named("libs") - def dependencies = versionCatalog.libraryAliases.collect { versionCatalog.findLibrary(it).get().get() } - def matchingProjectDependency = dependencies.find { - it.group == releaseCheckDependency.groupId && - it.name == releaseCheckDependency.artifactId && - it.version == releaseCheckDependency.version - } - assert matchingProjectDependency != null: - "No project dependency was found for expected release dependency ${releaseCheckDependency}" - } + String expected = getExpectedPomFileContent() + if (actual.replaceAll("\\s", "") != expected.replaceAll("\\s", "")) { + throw new AssertionError("""POM of artifact '${project.name}' does not match: +-------- +Actual: +${actual} +-------- +Expected: +${expected} +-------- +""") } } -check.dependsOn(ensureReleaseCheckUpToDate) -ext.getExpectedPomFileContent = { - getClass().getResourceAsStream("release_check/${project.name}.pom").text.replace('${archunit.version}', version).stripIndent() +task checkPom { + dependsOn 'generatePomFileForMavenJavaPublication' + doLast { + comparePom(new File(buildDir, 'publications/mavenJava/pom-default.xml').text) + } } +check.dependsOn(checkPom) task checkUploadedArtifacts { doLast { @@ -58,24 +57,6 @@ task checkUploadedArtifacts { getArtifact(project.name, ".pom").text.stripIndent() } - def checkPom = { - println "Verifying correct POM of ${project.name}" - - String actual = getUploadedPomFileContent() - String expected = getExpectedPomFileContent() - if (actual.replaceAll("\\s", "") != expected.replaceAll("\\s", "")) { - throw new AssertionError("""POM of artifact '${project.name}' does not match: --------- -Actual: -${actual} --------- -Expected: -${expected} --------- -""") - } - } - def checkSourcesExist = { assert getUploadedFile(project.name, 'jar', 'sources') != null } @@ -84,7 +65,7 @@ ${expected} assert getUploadedFile(project.name, 'jar', 'javadoc') != null } - checkPom() + comparePom(getUploadedPomFileContent()) checkSourcesExist() checkJavadocExists() diff --git a/buildSrc/src/main/groovy/archunit.java-release-publishing-conventions.gradle b/buildSrc/src/main/groovy/archunit.java-release-publishing-conventions.gradle index 9b3cadf2d..ba66c67c5 100644 --- a/buildSrc/src/main/groovy/archunit.java-release-publishing-conventions.gradle +++ b/buildSrc/src/main/groovy/archunit.java-release-publishing-conventions.gradle @@ -52,6 +52,21 @@ publishing { name = 'Manfred Hanke' email = 'manfred.hanke@tngtech.com' } + developer { + id = 'schulzjo-tng' + name = 'Jonathan Schulz' + email = 'jonathan.schulz@tngtech.com' + } + developer { + id = 'StefanGraeber' + name = 'Stefan Gräber' + email = 'stefan.graeber@tngtech.com' + } + developer { + id = 'TheManWhoStaresAtCode' + name = 'Andreas Zöller' + email = 'andreas.zoeller@tngtech.com' + } } organization { diff --git a/buildSrc/src/main/resources/release_check/archunit-junit4.pom b/buildSrc/src/main/resources/release_check/archunit-junit4.pom index f0203a069..8487f1456 100644 --- a/buildSrc/src/main/resources/release_check/archunit-junit4.pom +++ b/buildSrc/src/main/resources/release_check/archunit-junit4.pom @@ -35,6 +35,21 @@ Manfred Hanke manfred.hanke@tngtech.com + + schulzjo-tng + Jonathan Schulz + jonathan.schulz@tngtech.com + + + StefanGraeber + Stefan Gräber + stefan.graeber@tngtech.com + + + TheManWhoStaresAtCode + Andreas Zöller + andreas.zoeller@tngtech.com + scm:git@github.com:TNG/ArchUnit.git diff --git a/buildSrc/src/main/resources/release_check/archunit-junit5-api.pom b/buildSrc/src/main/resources/release_check/archunit-junit5-api.pom index 4d2f1a6d7..5a692e4a1 100644 --- a/buildSrc/src/main/resources/release_check/archunit-junit5-api.pom +++ b/buildSrc/src/main/resources/release_check/archunit-junit5-api.pom @@ -35,6 +35,21 @@ Manfred Hanke manfred.hanke@tngtech.com + + schulzjo-tng + Jonathan Schulz + jonathan.schulz@tngtech.com + + + StefanGraeber + Stefan Gräber + stefan.graeber@tngtech.com + + + TheManWhoStaresAtCode + Andreas Zöller + andreas.zoeller@tngtech.com + scm:git@github.com:TNG/ArchUnit.git diff --git a/buildSrc/src/main/resources/release_check/archunit-junit5-engine-api.pom b/buildSrc/src/main/resources/release_check/archunit-junit5-engine-api.pom index cafef39ea..58247b70f 100644 --- a/buildSrc/src/main/resources/release_check/archunit-junit5-engine-api.pom +++ b/buildSrc/src/main/resources/release_check/archunit-junit5-engine-api.pom @@ -36,6 +36,21 @@ Manfred Hanke manfred.hanke@tngtech.com + + schulzjo-tng + Jonathan Schulz + jonathan.schulz@tngtech.com + + + StefanGraeber + Stefan Gräber + stefan.graeber@tngtech.com + + + TheManWhoStaresAtCode + Andreas Zöller + andreas.zoeller@tngtech.com + scm:git@github.com:TNG/ArchUnit.git diff --git a/buildSrc/src/main/resources/release_check/archunit-junit5-engine.pom b/buildSrc/src/main/resources/release_check/archunit-junit5-engine.pom index 4d4b7967d..2347dfe38 100644 --- a/buildSrc/src/main/resources/release_check/archunit-junit5-engine.pom +++ b/buildSrc/src/main/resources/release_check/archunit-junit5-engine.pom @@ -36,6 +36,21 @@ Manfred Hanke manfred.hanke@tngtech.com + + schulzjo-tng + Jonathan Schulz + jonathan.schulz@tngtech.com + + + StefanGraeber + Stefan Gräber + stefan.graeber@tngtech.com + + + TheManWhoStaresAtCode + Andreas Zöller + andreas.zoeller@tngtech.com + scm:git@github.com:TNG/ArchUnit.git diff --git a/buildSrc/src/main/resources/release_check/archunit-junit5.pom b/buildSrc/src/main/resources/release_check/archunit-junit5.pom index 89848b754..d66b7bf94 100644 --- a/buildSrc/src/main/resources/release_check/archunit-junit5.pom +++ b/buildSrc/src/main/resources/release_check/archunit-junit5.pom @@ -36,6 +36,21 @@ Manfred Hanke manfred.hanke@tngtech.com + + schulzjo-tng + Jonathan Schulz + jonathan.schulz@tngtech.com + + + StefanGraeber + Stefan Gräber + stefan.graeber@tngtech.com + + + TheManWhoStaresAtCode + Andreas Zöller + andreas.zoeller@tngtech.com + scm:git@github.com:TNG/ArchUnit.git diff --git a/buildSrc/src/main/resources/release_check/archunit-junit6-api.pom b/buildSrc/src/main/resources/release_check/archunit-junit6-api.pom index b5122a70c..bf4768808 100644 --- a/buildSrc/src/main/resources/release_check/archunit-junit6-api.pom +++ b/buildSrc/src/main/resources/release_check/archunit-junit6-api.pom @@ -35,6 +35,21 @@ Manfred Hanke manfred.hanke@tngtech.com + + schulzjo-tng + Jonathan Schulz + jonathan.schulz@tngtech.com + + + StefanGraeber + Stefan Gräber + stefan.graeber@tngtech.com + + + TheManWhoStaresAtCode + Andreas Zöller + andreas.zoeller@tngtech.com + scm:git@github.com:TNG/ArchUnit.git diff --git a/buildSrc/src/main/resources/release_check/archunit-junit6-engine-api.pom b/buildSrc/src/main/resources/release_check/archunit-junit6-engine-api.pom index cc971a3b9..2b972e079 100644 --- a/buildSrc/src/main/resources/release_check/archunit-junit6-engine-api.pom +++ b/buildSrc/src/main/resources/release_check/archunit-junit6-engine-api.pom @@ -36,6 +36,21 @@ Manfred Hanke manfred.hanke@tngtech.com + + schulzjo-tng + Jonathan Schulz + jonathan.schulz@tngtech.com + + + StefanGraeber + Stefan Gräber + stefan.graeber@tngtech.com + + + TheManWhoStaresAtCode + Andreas Zöller + andreas.zoeller@tngtech.com + scm:git@github.com:TNG/ArchUnit.git diff --git a/buildSrc/src/main/resources/release_check/archunit-junit6-engine.pom b/buildSrc/src/main/resources/release_check/archunit-junit6-engine.pom index 4e18fa3a8..fda40bd91 100644 --- a/buildSrc/src/main/resources/release_check/archunit-junit6-engine.pom +++ b/buildSrc/src/main/resources/release_check/archunit-junit6-engine.pom @@ -36,6 +36,21 @@ Manfred Hanke manfred.hanke@tngtech.com + + schulzjo-tng + Jonathan Schulz + jonathan.schulz@tngtech.com + + + StefanGraeber + Stefan Gräber + stefan.graeber@tngtech.com + + + TheManWhoStaresAtCode + Andreas Zöller + andreas.zoeller@tngtech.com + scm:git@github.com:TNG/ArchUnit.git diff --git a/buildSrc/src/main/resources/release_check/archunit-junit6.pom b/buildSrc/src/main/resources/release_check/archunit-junit6.pom index 915db4b38..57cc86420 100644 --- a/buildSrc/src/main/resources/release_check/archunit-junit6.pom +++ b/buildSrc/src/main/resources/release_check/archunit-junit6.pom @@ -36,6 +36,21 @@ Manfred Hanke manfred.hanke@tngtech.com + + schulzjo-tng + Jonathan Schulz + jonathan.schulz@tngtech.com + + + StefanGraeber + Stefan Gräber + stefan.graeber@tngtech.com + + + TheManWhoStaresAtCode + Andreas Zöller + andreas.zoeller@tngtech.com + scm:git@github.com:TNG/ArchUnit.git diff --git a/buildSrc/src/main/resources/release_check/archunit.pom b/buildSrc/src/main/resources/release_check/archunit.pom index 9b9cd46d3..307ccd327 100644 --- a/buildSrc/src/main/resources/release_check/archunit.pom +++ b/buildSrc/src/main/resources/release_check/archunit.pom @@ -40,6 +40,21 @@ Manfred Hanke manfred.hanke@tngtech.com + + schulzjo-tng + Jonathan Schulz + jonathan.schulz@tngtech.com + + + StefanGraeber + Stefan Gräber + stefan.graeber@tngtech.com + + + TheManWhoStaresAtCode + Andreas Zöller + andreas.zoeller@tngtech.com + scm:git@github.com:TNG/ArchUnit.git diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml index bb58289cf..25abf9db5 100644 --- a/docs/_data/navigation.yml +++ b/docs/_data/navigation.yml @@ -10,6 +10,6 @@ main: - title: "User Guide" url: /userguide/html/000_Index.html - title: "API" - url: https://javadoc.io/doc/com.tngtech.archunit/archunit/1.4.2 + url: https://javadoc.io/doc/com.tngtech.archunit/archunit/1.5.0 - title: "About" url: /about diff --git a/docs/_pages/getting-started.md b/docs/_pages/getting-started.md index 9b27a2f6c..dfbcf884b 100644 --- a/docs/_pages/getting-started.md +++ b/docs/_pages/getting-started.md @@ -15,7 +15,7 @@ ArchUnit can be obtained from Maven Central. com.tngtech.archunit archunit - 1.4.2 + 1.5.0 test ``` @@ -23,7 +23,7 @@ ArchUnit can be obtained from Maven Central. #### Gradle ```groovy dependencies { - testImplementation 'com.tngtech.archunit:archunit:1.4.2' + testImplementation 'com.tngtech.archunit:archunit:1.5.0' } ``` diff --git a/docs/_posts/2026-08-04-release-v1.5.0.markdown b/docs/_posts/2026-08-04-release-v1.5.0.markdown new file mode 100644 index 000000000..501a6f392 --- /dev/null +++ b/docs/_posts/2026-08-04-release-v1.5.0.markdown @@ -0,0 +1,8 @@ +--- +layout: splash +title: "New release of ArchUnit (v1.5.0)" +date: 2026-08-04 12:00:00 +categories: news release +--- + +A new release of ArchUnit (v1.5.0) is out. For details see [the release on GitHub](https://github.com/TNG/ArchUnit/releases/tag/v1.5.0 "ArchUnit v1.5.0 on GitHub"). diff --git a/docs/userguide/html/000_Index.html b/docs/userguide/html/000_Index.html index 249b9bd18..9a207a63d 100644 --- a/docs/userguide/html/000_Index.html +++ b/docs/userguide/html/000_Index.html @@ -442,6 +442,13 @@ margin-top: 1.2em !important; margin-bottom: 0.55em !important; } +/* Restore code box for single inline-code inside table cells */ +p.tableblock > code:only-child { + background-color: #f7f7f8 !important; + padding: .1em .5ex !important; + border-radius: 4px !important; + border: 1px solid #e0e0e0; /* makes a lone dot's box clearly visible */ +} @@ -450,7 +457,7 @@