Skip to content

Commit 523cd86

Browse files
committed
ArchrulesLibraryPlugin archrules jar
add a Jar task to bundle archrules add maven central / gradle plugin portal badges to README.md (these won't work yet) add multi-gradle version testing to IntegrationTest
1 parent 23d3195 commit 523cd86

File tree

4 files changed

+38
-6
lines changed

4 files changed

+38
-6
lines changed

README.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,19 @@ JUnit suite. However, it is limited by its design to be used as part of a JUnit
55
ArchRules is a toolkit which gives organizations the ability to share and apply rules across any number of repositories.
66
Rules can be sourced from OSS libraries or private internal libraries.
77

8-
### Authoring Rules
8+
## Current Versions
9+
10+
### Core Library
11+
[![Maven Central](https://img.shields.io/maven-central/v/com.netflix.nebula/nebula-archrules-core?style=for-the-badge&color=01AF01)](https://repo1.maven.org/maven2/com/netflix/nebula/nebula-archrules-core/)
12+
13+
### Library Plugin
14+
[![Gradle Plugin Portal](https://img.shields.io/gradle-plugin-portal/v/com.netflix.nebula.archrules.library?style=for-the-badge&color=01AF01)](https://plugins.gradle.org/plugin/com.netflix.nebula.archrules.library)
15+
16+
### Runner Plugin
17+
[![Gradle Plugin Portal](https://img.shields.io/gradle-plugin-portal/v/com.netflix.nebula.archrules.runner?style=for-the-badge&color=01AF01)](https://plugins.gradle.org/plugin/com.netflix.nebula.archrules.runner)
18+
19+
20+
## Authoring Rules
921

1022
To author rules, apply the ArchRules Library plugin to a project:
1123

nebula-archrules-gradle-plugin/src/main/kotlin/com/netflix/nebula/archrules/gradle/ArchrulesLibraryPlugin.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package com.netflix.nebula.archrules.gradle
33
import org.gradle.api.Plugin
44
import org.gradle.api.Project
55
import org.gradle.api.plugins.JavaPluginExtension
6+
import org.gradle.jvm.tasks.Jar
67
import org.gradle.kotlin.dsl.getByType
8+
import org.gradle.kotlin.dsl.register
79

810
class ArchrulesLibraryPlugin : Plugin<Project> {
911
override fun apply(project: Project) {
@@ -14,6 +16,10 @@ class ArchrulesLibraryPlugin : Plugin<Project> {
1416
project.dependencies.add(archRulesSourceSet.implementationConfigurationName,
1517
"com.netflix.nebula:nebula-archrules-core:$version"
1618
)
19+
val jarTask = project.tasks.register<Jar>("archRulesJar") {
20+
archiveClassifier.set("archrules")
21+
from(archRulesSourceSet.output)
22+
}
1723
}
1824
}
1925
}

nebula-archrules-gradle-plugin/src/test/kotlin/com/netflix/nebula/archrules/gradle/IntegrationTest.kt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,18 @@ package com.netflix.nebula.archrules.gradle
33
import nebula.test.dsl.*
44
import nebula.test.dsl.TestKitAssertions.assertThat
55
import org.gradle.testkit.runner.TaskOutcome
6-
import org.junit.jupiter.api.Test
76
import org.junit.jupiter.api.io.TempDir
7+
import org.junit.jupiter.params.ParameterizedTest
8+
import org.junit.jupiter.params.provider.EnumSource
89
import java.io.File
910

1011
internal class IntegrationTest {
1112
@TempDir
1213
lateinit var projectDir: File
1314

14-
@Test
15-
fun test() {
15+
@ParameterizedTest
16+
@EnumSource(SupportedGradleVersion::class)
17+
fun test(gradleVersion: SupportedGradleVersion) {
1618
val runner = testProject(projectDir) {
1719
subProject("library-with-rules") {
1820
// a library that contains production code and rules to go along with it
@@ -86,11 +88,15 @@ public class LibraryArchRules implements ArchRulesService {
8688
}
8789
}
8890

89-
val result = runner.run("check", "compileArchRulesJava")
91+
val result = runner.run("check", "archRulesJar") {
92+
withGradleVersion(gradleVersion.version)
93+
}
9094

9195
assertThat(result.task(":library-with-rules:compileArchRulesJava"))
9296
.`as`("compile task runs for the archRules source set")
93-
.hasOutcome(TaskOutcome.SUCCESS, TaskOutcome.UP_TO_DATE)
97+
.hasOutcome(TaskOutcome.SUCCESS)
98+
assertThat(result.task(":library-with-rules:archRulesJar"))
99+
.hasOutcome(TaskOutcome.SUCCESS)
94100
assertThat(result.task(":library-with-rules:check"))
95101
.hasOutcome(TaskOutcome.SUCCESS, TaskOutcome.UP_TO_DATE)
96102
assertThat(result.task(":code-to-check:check"))
@@ -102,5 +108,8 @@ public class LibraryArchRules implements ArchRulesService {
102108
assertThat(projectDir.resolve("library-with-rules/build/libs/library-with-rules.jar"))
103109
.`as`("Library Jar is created")
104110
.exists()
111+
assertThat(projectDir.resolve("library-with-rules/build/libs/library-with-rules-archrules.jar"))
112+
.`as`("ArchRules Jar is created")
113+
.exists()
105114
}
106115
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.netflix.nebula.archrules.gradle
2+
3+
enum class SupportedGradleVersion(val version: String) {
4+
MIN("9.0.0"), MAX("9.2.0")
5+
}

0 commit comments

Comments
 (0)