diff --git a/.structural.yml b/.structural.yml new file mode 100644 index 00000000..1c097481 --- /dev/null +++ b/.structural.yml @@ -0,0 +1,15 @@ +# Copyright Ion Fusion contributors. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +packages: + - "dev.ionfusion.fusion" + - "dev.ionfusion.runtime.base" + - "dev.ionfusion.runtime.embed" + +rules: + # For each package, declare other packages it can depend on. + "dev.ionfusion.fusion": + - "dev.ionfusion.runtime.base" + - "dev.ionfusion.runtime.embed" + "dev.ionfusion.runtime.embed": + - "dev.ionfusion.runtime.base" diff --git a/runtime/build.gradle.kts b/runtime/build.gradle.kts index 51c29a6d..3699aff7 100644 --- a/runtime/build.gradle.kts +++ b/runtime/build.gradle.kts @@ -5,6 +5,7 @@ plugins { id("buildlogic.fusion-common-conventions") id("buildlogic.java-library-conventions") id("buildlogic.jacoco-conventions") + id("com.adrianczuczka.structural") } dependencies { @@ -77,6 +78,13 @@ tasks.jacocoTestCoverageVerification { } +structural { + // Plugin (@1.1.4) resolves this relative to the root directory, not this project. + // https://github.com/adrianczuczka/structural/issues/5 + config = ".structural.yml" +} + + //============================================================================= // Documentation diff --git a/settings.gradle.kts b/settings.gradle.kts index 157cf469..0d618ad1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,4 +12,15 @@ // Among other things, this becomes the module name in IDEA. rootProject.name = "fusion-java" +pluginManagement { + repositories { + mavenCentral() + } + plugins { + // Enforce our desired inter-package dependency structure. + // https://github.com/adrianczuczka/structural + id("com.adrianczuczka.structural") version "1.1.4" + } +} + include("testing", "runtime", "fusioncli", "sdk")