Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
distribution: 'zulu'
java-version: ${{ env.build_java_version }}
- name: Build
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v5
with:
arguments: build
- name: Check project files unmodified
Expand Down Expand Up @@ -78,7 +78,7 @@ jobs:
}
}
- name: Test
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v5
env:
JAVA_HOME: ${{ env.build_jdk_path }}
with:
Expand Down Expand Up @@ -128,13 +128,13 @@ jobs:
}
}
- name: Publish to Maven Local
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v5
env:
JAVA_HOME: ${{ env.build_jdk_path }}
with:
arguments: build -xtest -xspotbugsMain -xjavadoc publishToMavenLocal
- name: Integration test
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v5
env:
JAVA_HOME: ${{ env.build_jdk_path }}
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/check-dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Check for dependency updates
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v5
with:
arguments: checkDependencyUpdates -DoutputFormatter=plain,json
- name: Create issue/comment if ASM is not up-to-date
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gradle-wrapper-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: gradle/actions/wrapper-validation@v3.3.1
- uses: gradle/actions/wrapper-validation@v5
8 changes: 4 additions & 4 deletions archunit-3rd-party-test/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ ext.moduleName = 'com.tngtech.archunit.thirdpartytest'
dependencies {
testImplementation project(path: ':archunit', configuration: 'shadow')
testImplementation project(path: ':archunit', configuration: 'tests')
testImplementation dependency.springBootLoader
testImplementation libs.springBootLoader
dependency.addGuava { dependencyNotation, config -> testImplementation(dependencyNotation, config) }
testImplementation dependency.junit4
testImplementation dependency.junit_dataprovider
testImplementation dependency.assertj
testImplementation libs.junit4
testImplementation libs.junit.dataprovider
testImplementation libs.assertj
}
2 changes: 1 addition & 1 deletion archunit-example/example-plain/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ dependencies {

// we still use JUnit 4 as the test runner, but we don't use JUnit 4 support within this project
// so tests could well be run using TestNG, etc.
testImplementation dependency.junit4
testImplementation libs.junit4
}

test {
Expand Down
4 changes: 2 additions & 2 deletions archunit-integration-test/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ ext.moduleName = 'com.tngtech.archunit.integrationtest'
ext.minimumJavaVersion = JavaVersion.VERSION_1_8

dependencies {
testImplementation dependency.junitPlatform
testImplementation dependency.assertj
testImplementation libs.junitPlatform
testImplementation libs.assertj
testImplementation project(path: ':archunit', configuration: 'tests')
testImplementation project(path: ':archunit-junit4')
testImplementation project(path: ':archunit-junit5-api')
Expand Down
23 changes: 7 additions & 16 deletions archunit-junit/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,33 +36,24 @@ artifacts {
dependencies {
archJunitApi project(path: ':archunit', configuration: 'shadow')
dependency.addGuava { dependencyNotation, config -> implementation(dependencyNotation, config) }
implementation dependency.slf4j

testImplementation dependency.junit4
testImplementation dependency.junit_dataprovider
testImplementation dependency.mockito
testImplementation dependency.assertj
testImplementation(dependency.assertj_guava) {
exclude module: 'assertj-core'
exclude module: 'guava'
}

testImplementation libs.junit4
testImplementation libs.junit.dataprovider
testImplementation libs.mockito
testImplementation libs.assertj
testImplementation project(path: ':archunit', configuration: 'tests')

// This is a hack for running tests with IntelliJ instead of delegating to Gradle,
// because for some reason this dependency cannot be resolved otherwise :-(
testRuntimeOnly dependency.asm
}

archUnitTest {
providesTestJar = true
testRuntimeOnly libs.asm
}

shadowJar {
exclude 'META-INF/**'

dependencies {
exclude(project(':archunit'))
exclude(dependency(dependency.slf4j))
exclude(dependency("${libs.slf4j.get()}"))
}
}

Expand Down
25 changes: 9 additions & 16 deletions archunit-junit/junit4/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,18 @@ ext.moduleName = 'com.tngtech.archunit.junit4'
dependencies {
api project(path: ':archunit', configuration: 'shadow')
api project(path: ':archunit-junit', configuration: 'archJunitApi')
api dependency.junit4
api libs.junit4
implementation project(path: ':archunit-junit', configuration: 'shadow')
dependency.addGuava { dependencyNotation, config -> implementation(dependencyNotation, config) }
implementation dependency.slf4j

testImplementation dependency.junit4
testImplementation dependency.junit_dataprovider
testImplementation dependency.mockito
testImplementation dependency.assertj
testImplementation(dependency.assertj_guava) {
exclude module: 'assertj-core'
exclude module: 'guava'
}

testImplementation libs.junit4
testImplementation libs.mockito
testImplementation libs.assertj
testImplementation project(path: ':archunit', configuration: 'tests')
testImplementation project(path: ':archunit-junit', configuration: 'tests')

// This is a hack for running tests with IntelliJ instead of delegating to Gradle,
// because for some reason this dependency cannot be resolved otherwise :-(
testRuntimeOnly dependency.asm
testRuntimeOnly libs.asm
}

javadoc {
Expand All @@ -42,9 +35,9 @@ shadowJar {

dependencies {
exclude(project(':archunit'))
exclude(dependency(dependency.junit4))
exclude(dependency(dependency.slf4j))
exclude(dependency(dependency.hamcrest)) // Shadow doesn't respect transitive excludes :-(
exclude(dependency("${libs.junit4.get()}"))
exclude(dependency("${libs.slf4j.get()}"))
exclude(dependency("${libs.hamcrest.get()}")) // Shadow doesn't respect transitive excludes :-(
}
}

Expand Down
5 changes: 2 additions & 3 deletions archunit-junit/junit5/api/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ ext.minimumJavaVersion = JavaVersion.VERSION_1_8
dependencies {
api project(path: ':archunit')
api project(path: ':archunit-junit', configuration: 'archJunitApi')
api dependency.junitPlatformCommons
api libs.junitPlatformCommons
}

javadoc {
Expand All @@ -23,8 +23,7 @@ shadowJar {
exclude 'META-INF/maven/**'

dependencies {
exclude(project(':archunit'))
exclude(dependency { it.name != dependency.guava && !it.name.contains('archunit-junit') })
exclude(dependency { !it.name.contains('archunit-junit') })
}
}

Expand Down
10 changes: 3 additions & 7 deletions archunit-junit/junit5/engine-api/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,11 @@ ext.moduleName = 'com.tngtech.archunit.junit5.engineapi'
ext.minimumJavaVersion = JavaVersion.VERSION_1_8

dependencies {
api dependency.junitPlatformEngine
api libs.junitPlatformEngine
implementation project(path: ':archunit')
dependency.addGuava { dependencyNotation, config -> implementation(dependencyNotation, config) }
implementation dependency.slf4j

testImplementation project(path: ':archunit-junit5-api')
testImplementation project(path: ':archunit', configuration: 'tests')
testImplementation dependency.assertj
testImplementation dependency.mockito
testImplementation libs.assertj
}

compileJava.dependsOn project(':archunit-junit5-api').finishArchive
Expand All @@ -30,7 +26,7 @@ shadowJar {
exclude 'META-INF/maven/**'

dependencies {
exclude(dependency { it.name != dependency.guava })
exclude(dependency { true })
}
}

Expand Down
11 changes: 5 additions & 6 deletions archunit-junit/junit5/engine/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,12 @@ dependencies {
api project(path: ':archunit-junit5-engine-api')
implementation project(path: ':archunit-junit')
dependency.addGuava { dependencyNotation, config -> implementation(dependencyNotation, config) }
implementation dependency.slf4j

testImplementation project(path: ':archunit', configuration: 'tests')
testImplementation dependency.assertj
testImplementation dependency.mockito
testImplementation dependency.mockito_junit5
testImplementation dependency.log4j_core
testImplementation libs.assertj
testImplementation libs.mockito
testImplementation libs.mockito.junit5
testImplementation libs.log4j.core
}

gradle.projectsEvaluated {
Expand All @@ -45,7 +44,7 @@ shadowJar {
dependencies {
exclude(dependency {
def isApi = it.configuration == 'archJunitApi'
def isUnwantedDependency = it.name != dependency.guava && it.moduleName != 'archunit-junit'
def isUnwantedDependency = it.moduleName != 'archunit-junit'
isUnwantedDependency || isApi
})
}
Expand Down
2 changes: 1 addition & 1 deletion archunit-maven-test/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ List<IntegrationTestConfig> integrationTestConfigs = [
)
]

def vintageEngine = dependency.junit5VintageEngine
def vintageEngine = libs.junit5VintageEngine.get()
integrationTestConfigs << new IntegrationTestConfig(
javaVersion: integrationTestJavaVersion,
testType: TestType.JUNIT5,
Expand Down
20 changes: 10 additions & 10 deletions archunit/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ plugins {
ext.moduleName = 'com.tngtech.archunit'

dependencies {
api dependency.slf4j
implementation dependency.asm
api libs.slf4j
implementation libs.asm
dependency.addGuava { dependencyNotation, config -> implementation(dependencyNotation, config) }

testImplementation dependency.log4j_api
testImplementation dependency.log4j_core
testImplementation dependency.junit4
testImplementation dependency.junit_dataprovider
testImplementation dependency.mockito
testImplementation dependency.assertj
testImplementation(dependency.assertj_guava) {
testImplementation libs.log4j.api
testImplementation libs.log4j.core
testImplementation libs.junit4
testImplementation libs.junit.dataprovider
testImplementation libs.mockito
testImplementation libs.assertj
testImplementation(libs.assertj.guava) {
exclude module: 'assertj-core'
exclude module: 'guava'
}
Expand All @@ -25,7 +25,7 @@ shadowJar {
exclude 'META-INF/**'

dependencies {
exclude(dependency(dependency.slf4j))
exclude(dependency("${libs.slf4j.get()}"))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@

@Category(Slow.class)
public class ClassFileImporterSlowTest {
/**
* Importing the full classpath may give thousands of classes in {@link sun} and (especially for Java 8) {@link com.sun} packages.
* Importing those would increase the memory footprint of the test tremendously, but not give an additional benefit for the test,
* so they are excluded for convenience.
*/
private static final ImportOption EXCLUDE_SUN_PACKAGES = l -> !l.contains("/sun/");

@Rule
public final TransientCopyRule copyRule = new TransientCopyRule();
@Rule
Expand All @@ -53,6 +60,7 @@ public void imports_the_classpath_without_archives() {
assertThatTypes(classes).doNotContain(File.class); // Default does not import JDK classes

classes = new ClassFileImporter()
.withImportOption(EXCLUDE_SUN_PACKAGES)
.withImportOption(importJavaBaseOrRtAndJUnitJarAndFilesOnTheClasspath())
.importClasspath();

Expand All @@ -73,10 +81,12 @@ public void imports_the_classpath_using_multiple_ImportOptions() {
@Test
public void importing_the_default_package_equals_importing_the_classpath() {
Set<String> classNamesOfDefaultPackageImport = new ClassFileImporter()
.withImportOption(EXCLUDE_SUN_PACKAGES)
.withImportOption(importJavaBaseOrRtAndJUnitJarAndFilesOnTheClasspath())
.importPackages("")
.stream().map(JavaClass::getName).collect(toSet());
Set<String> classNamesOfClasspathImport = new ClassFileImporter()
.withImportOption(EXCLUDE_SUN_PACKAGES)
.withImportOption(importJavaBaseOrRtAndJUnitJarAndFilesOnTheClasspath())
.importClasspath()
.stream().map(JavaClass::getName).collect(toSet());
Expand Down Expand Up @@ -180,6 +190,7 @@ public void creates_JavaPackages() {

private JavaClasses importJavaBase() {
return new ClassFileImporter()
.withImportOption(EXCLUDE_SUN_PACKAGES)
.withImportOption(location ->
// before Java 9 packages like java.lang were in rt.jar
location.contains("rt.jar") ||
Expand Down
40 changes: 3 additions & 37 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,48 +35,14 @@ ext {
googleRelocationPackage = "${thirdPartyRelocationPackage}.com.google"

dependency = [
asm : [group: 'org.ow2.asm', name: 'asm', version: '9.7.1'],
guava : [group: 'com.google.guava', name: 'guava', version: '33.3.1-jre'],
addGuava : { dependencyHandler ->
dependencyHandler(dependency.guava) {
addGuava : { dependencyHandler ->
dependencyHandler(libs.guava) {
exclude module: 'listenablefuture'
exclude module: 'jsr305'
exclude module: 'checker-qual'
exclude module: 'jspecify'
exclude module: 'error_prone_annotations'
exclude module: 'j2objc-annotations'
}
},
slf4j : [group: 'org.slf4j', name: 'slf4j-api', version: '2.0.16'],
log4j_api : [group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.24.1'],
log4j_core : [group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.24.1'],
log4j_slf4j : [group: 'org.apache.logging.log4j', name: 'log4j-slf4j2-impl', version: '2.24.1'],

junit4 : [group: 'junit', name: 'junit', version: '4.13.2'],
junit5JupiterApi : [group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.11.2'],
junit5JupiterEngine : [group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.11.2'],
junit5VintageEngine : [group: 'org.junit.vintage', name: 'junit-vintage-engine', version: '5.11.2'],
junitPlatform : [group: 'org.junit.platform', name: 'junit-platform-runner', version: '1.11.2'],
junitPlatformCommons: [group: 'org.junit.platform', name: 'junit-platform-commons', version: '1.11.2'],
junitPlatformEngine : [group: 'org.junit.platform', name: 'junit-platform-engine', version: '1.11.2'],
hamcrest : [group: 'org.hamcrest', name: 'hamcrest-core', version: '1.3'],
junit_dataprovider : [group: 'com.tngtech.java', name: 'junit-dataprovider', version: '1.11.0'],
mockito : [group: 'org.mockito', name: 'mockito-core', version: '4.11.0'], // mockito 5 requires Java 11
mockito_junit5 : [group: 'org.mockito', name: 'mockito-junit-jupiter', version: '4.6.1'],
assertj : [group: 'org.assertj', name: 'assertj-core', version: '3.26.3'],
assertj_guava : [group: 'org.assertj', name: 'assertj-guava', version: '3.26.3'],

// Dependencies for example projects / tests
javaxAnnotationApi : [group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'],
springBeans : [group: 'org.springframework', name: 'spring-beans', version: '5.3.23'],
springBootLoader : [group: 'org.springframework.boot', name: 'spring-boot-loader', version: '2.7.13'],
jakartaInject : [group: 'jakarta.inject', name: 'jakarta.inject-api', version: '2.0.1'],
jakartaAnnotations : [group: 'jakarta.annotation', name: 'jakarta.annotation-api', version: '2.1.1'],
guice : [group: 'com.google.inject', name: 'guice', version: '5.1.0'],
// NOTE: The pure javaee-api dependencies are crippled, so to run any test we need to choose a full implementation provider
geronimoEjb : [group: 'org.apache.geronimo.specs', name: 'geronimo-ejb_3.1_spec', version: '1.0.2'],
geronimoJpa : [group: 'org.apache.geronimo.specs', name: 'geronimo-jpa_2.0_spec', version: '1.1'],
jodaTime : [group: 'joda-time', name: 'joda-time', version: '2.12.7'],
joox : [group: 'org.jooq', name: 'joox-java-6', version: '1.6.0']
]

minSupportedJavaVersion = JavaVersion.VERSION_1_8
Expand Down
Loading