diff --git a/bom/README.md b/bom/README.md new file mode 100644 index 0000000000..eca6e183c9 --- /dev/null +++ b/bom/README.md @@ -0,0 +1,48 @@ +# GraphQL Kotlin BOM +[![Maven Central](https://img.shields.io/maven-central/v/com.expediagroup/graphql-kotlin-bom.svg?label=Maven%20Central)](https://central.sonatype.com/search?namespace=com.expediagroup&q=name%3Agraphql-kotlin-bom) + +`graphql-kotlin-bom` defines the versions of all the modules in `graphql-kotlin`. +This allows the version of the modules imported in your project to be consistent +without needing to specify the version of each module. + +## Usage + +With Maven, import a dependency on `graphql-kotlin-bom` in `dependencyManagement` section in your project pom, +and add dependencies on `graphql-kotlin` modules with no version. + +```xml + + + + com.expediagroup + graphql-kotlin-bom + ${latestVersion} + pom + import + + + + + + + com.expediagroup + graphql-kotlin-client + + +``` + +With Gradle, import `graphql-kotlin-bom` using Gradle `platform`, +and add dependencies on `graphql-kotlin` modules with no version. + +```kotlin +implementation(platform("com.expediagroup:graphql-kotlin-bom:$latestVersion")) + +implementation("com.expediagroup:graphql-kotlin-client") +``` + +## Documentation + +Additional information can be found in our [documentation](https://opensource.expediagroup.com/graphql-kotlin/docs/server/graphql-server) +and the [Javadocs](https://www.javadoc.io/doc/com.expediagroup/graphql-kotlin-server) of all published library versions. + +If you have a question about something you can not find in our documentation or javadocs, feel free to [start a new discussion](https://github.com/ExpediaGroup/graphql-kotlin/discussions). diff --git a/bom/build.gradle.kts b/bom/build.gradle.kts new file mode 100644 index 0000000000..bd6d69e611 --- /dev/null +++ b/bom/build.gradle.kts @@ -0,0 +1,31 @@ +description = "BOM (Bill Of Materials) for graphql-kotlin" + +plugins { + `maven-publish` + `java-platform` +} + +javaPlatform { + allowDependencies() +} + +dependencies { + project.rootProject.subprojects.forEach { subproject -> + if (subproject.name != "graphql-kotlin-bom") { + api(subproject) + } + } +} + +publishing { + publications { + create("graphql-kotlin-bom") { + from(components["javaPlatform"]) + pom { + description = "BOM (Bill Of Materials) for graphql-kotlin" + name = "graphql-kotlin-bom" + packaging = "pom" + } + } + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 0866bb9edf..f6ce4c4354 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -32,6 +32,9 @@ include(":graphql-kotlin-dataloader") include(":graphql-kotlin-dataloader-instrumentation") include(":graphql-kotlin-automatic-persisted-queries") +// BOM +include(":graphql-kotlin-bom") + // // Project mappings so we don't need to create projects that group subprojects // @@ -65,3 +68,6 @@ project(":graphql-kotlin-ktor-server").projectDir = file("servers/graphql-kotlin project(":graphql-kotlin-dataloader").projectDir = file("executions/graphql-kotlin-dataloader") project(":graphql-kotlin-dataloader-instrumentation").projectDir = file("executions/graphql-kotlin-dataloader-instrumentation") project(":graphql-kotlin-automatic-persisted-queries").projectDir = file("executions/graphql-kotlin-automatic-persisted-queries") + +// BOM +project(":graphql-kotlin-bom").projectDir = file("bom") diff --git a/website/docs/getting-started.mdx b/website/docs/getting-started.mdx index 9a5643db03..bdd01c6edd 100644 --- a/website/docs/getting-started.mdx +++ b/website/docs/getting-started.mdx @@ -18,7 +18,9 @@ Using a JVM dependency manager, link any `graphql-kotlin-*` library to your proj defaultValue="gradle" values={[ { label: 'Gradle Kotlin', value: 'gradle' }, - { label: 'Maven', value: 'maven' } + { label: 'Gradle Kotlin with BOM', value: 'gradle-bom' }, + { label: 'Maven', value: 'maven' }, + { label: 'Maven with BOM', value: 'maven-bom' } ] }> @@ -28,6 +30,15 @@ Using a JVM dependency manager, link any `graphql-kotlin-*` library to your proj implementation("com.expediagroup", "graphql-kotlin-spring-server", latestVersion) ``` + + + +```kotlin +implementation(platform("com.expediagroup:graphql-kotlin-bom:$latestVersion")) + +implementation("com.expediagroup", "graphql-kotlin-spring-server") +``` + @@ -39,6 +50,31 @@ implementation("com.expediagroup", "graphql-kotlin-spring-server", latestVersion ``` + + + + +```xml + + + + com.expediagroup + graphql-kotlin-bom + ${latestVersion} + pom + import + + + + + + + com.expediagroup + graphql-kotlin-spring-server + + +``` +