diff --git a/devkit-bom/README.md b/devkit-bom/README.md new file mode 100644 index 0000000..5cfbbb6 --- /dev/null +++ b/devkit-bom/README.md @@ -0,0 +1,46 @@ +# DevKit BOM + +The devkit-bom (Bill of Materials) is a Maven POM file provided by OnixByte to manage dependency versions for the DevKit suite of libraries. By incorporating this BOM into your build configuration, you can ensure consistent versioning across all included dependencies without needing to specify versions explicitly in your project files. Published with Gradle metadata, this BOM supports both Maven and Gradle projects, and this document outlines how to integrate and use it effectively in both ecosystems. + +## Using in Maven + +Add the `devkit-bom` to your `pom.xml` under ``: + +```xml + + + + com.onixbyte + devkit-bom + ${devkit-version} + pom + import + + + +``` + +Then reference dependencies like `devkit-core` without a version. + +## Using in Gradle + +In your `build.gradle[.kts]`, apply the BOM using the `platform` dependency: + +```groovy +dependencies { + implementation platform('com.onixbyte:devkit-bom:2.0.0') + implementation 'com.onixbyte:devkit-core' + implementation 'com.onixbyte:devkit-utils' +} +``` + +If you are using Kotlin DSL: + +```kotlin +dependencies { + implementation(platform("com.onixbyte:devkit-bom:2.0.0")) + implementation("com.onixbyte:devkit-core") + implementation("com.onixbyte:devkit-utils") +} +``` + diff --git a/devkit-bom/build.gradle.kts b/devkit-bom/build.gradle.kts new file mode 100644 index 0000000..2d425cd --- /dev/null +++ b/devkit-bom/build.gradle.kts @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2024-2025 OnixByte. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import java.net.URI + +plugins { + id("java-platform") + id("maven-publish") + id("signing") +} + +val artefactVersion: String by project + +group = "com.onixbyte" +version = artefactVersion + +repositories { + mavenCentral() +} + +dependencies { + constraints { + api("com.onixbyte:devkit-core:$artefactVersion") + api("com.onixbyte:devkit-utils:$artefactVersion") + api("com.onixbyte:guid:$artefactVersion") + api("com.onixbyte:key-pair-loader:$artefactVersion") + api("com.onixbyte:map-util-unsafe:$artefactVersion") + api("com.onixbyte:num4j:$artefactVersion") + api("com.onixbyte:simple-jwt-facade:$artefactVersion") + api("com.onixbyte:simple-jwt-authzero:$artefactVersion") + api("com.onixbyte:simple-jwt-spring-boot-starter:$artefactVersion") + api("com.onixbyte:property-guard-spring-boot-starter:$artefactVersion") + api("com.onixbyte:simple-serial-spring-boot-starter:$artefactVersion") + } +} + +publishing { + publications { + create("devkitBom") { + groupId = group.toString() + artifactId = "devkit-bom" + version = artefactVersion + + pom { + name = "DevKit BOM" + description = "Using BOM could use unified OnixByte JDevKit." + url = "https://github.com/OnixByte/devkit-bom" + + licenses { + license { + name = "The Apache License, Version 2.0" + url = "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } + + scm { + connection = "scm:git:git://github.com:OnixByte/devkit-bom.git" + developerConnection = "scm:git:git://github.com:OnixByte/devkit-bom.git" + url = "https://github.com/OnixByte/devkit-bom" + } + + developers { + developer { + id = "zihluwang" + name = "Zihlu Wang" + email = "zihlu.wang@onixbyte.com" + timezone = "Asia/Hong_Kong" + } + } + } + + print(components) + + from(components["javaPlatform"]) + + signing { + sign(publishing.publications["devkitBom"]) + } + } + + repositories { + maven { + name = "sonatypeNexus" + url = URI(providers.gradleProperty("repo.maven-central.host").get()) + credentials { + username = providers.gradleProperty("repo.maven-central.username").get() + password = providers.gradleProperty("repo.maven-central.password").get() + } + } + } + } +} \ No newline at end of file diff --git a/devkit-core/build.gradle.kts b/devkit-core/build.gradle.kts index bbef4ec..f71a423 100644 --- a/devkit-core/build.gradle.kts +++ b/devkit-core/build.gradle.kts @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI plugins { java diff --git a/devkit-utils/build.gradle.kts b/devkit-utils/build.gradle.kts index a7468b5..190d2e4 100644 --- a/devkit-utils/build.gradle.kts +++ b/devkit-utils/build.gradle.kts @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI plugins { java diff --git a/gradle.properties b/gradle.properties index 85f12ee..b508e98 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,16 +15,16 @@ # limitations under the License. # +artefactVersion=2.0.0 +projectUrl=https://onixbyte.com/JDevKit +projectGithubUrl=https://github.com/OnixByte/JDevKit +licenseName=The Apache License, Version 2.0 +licenseUrl=https://www.apache.org/licenses/LICENSE-2.0.txt + jacksonVersion=2.18.2 javaJwtVersion=4.4.0 junitVersion=5.11.4 logbackVersion=1.5.16 slf4jVersion=2.0.16 springVersion=6.2.2 -springBootVersion=3.4.2 - -artefactVersion=2.0.0 -projectUrl=https://onixbyte.com/JDevKit -projectGithubUrl=https://github.com/OnixByte/JDevKit -licenseName=The Apache License, Version 2.0 -licenseUrl=https://www.apache.org/licenses/LICENSE-2.0.txt \ No newline at end of file +springBootVersion=3.4.2 \ No newline at end of file diff --git a/guid/build.gradle.kts b/guid/build.gradle.kts index c056445..84cda10 100644 --- a/guid/build.gradle.kts +++ b/guid/build.gradle.kts @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI plugins { java diff --git a/key-pair-loader/build.gradle.kts b/key-pair-loader/build.gradle.kts index 6c56d71..22e769c 100644 --- a/key-pair-loader/build.gradle.kts +++ b/key-pair-loader/build.gradle.kts @@ -14,6 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI + plugins { java id("java-library") diff --git a/map-util-unsafe/build.gradle.kts b/map-util-unsafe/build.gradle.kts index e30e3ad..7d46c88 100644 --- a/map-util-unsafe/build.gradle.kts +++ b/map-util-unsafe/build.gradle.kts @@ -14,6 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI + plugins { java id("java-library") diff --git a/num4j/build.gradle.kts b/num4j/build.gradle.kts index 3662868..60c0bd2 100644 --- a/num4j/build.gradle.kts +++ b/num4j/build.gradle.kts @@ -14,6 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI + plugins { java id("java-library") diff --git a/property-guard-spring-boot-starter/build.gradle.kts b/property-guard-spring-boot-starter/build.gradle.kts index d91e0b9..8db0a5e 100644 --- a/property-guard-spring-boot-starter/build.gradle.kts +++ b/property-guard-spring-boot-starter/build.gradle.kts @@ -14,6 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI + plugins { java id("java-library") diff --git a/settings.gradle.kts b/settings.gradle.kts index 7157815..794f015 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,6 +18,7 @@ rootProject.name = "JDevKit" include( + "devkit-bom", "devkit-core", "devkit-utils", "guid", diff --git a/simple-jwt-authzero/build.gradle.kts b/simple-jwt-authzero/build.gradle.kts index f93dc8f..0a9e4a0 100644 --- a/simple-jwt-authzero/build.gradle.kts +++ b/simple-jwt-authzero/build.gradle.kts @@ -14,6 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI + plugins { java id("java-library") diff --git a/simple-jwt-facade/build.gradle.kts b/simple-jwt-facade/build.gradle.kts index 467101a..147d9fd 100644 --- a/simple-jwt-facade/build.gradle.kts +++ b/simple-jwt-facade/build.gradle.kts @@ -14,6 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI + plugins { java id("java-library") diff --git a/simple-jwt-spring-boot-starter/build.gradle.kts b/simple-jwt-spring-boot-starter/build.gradle.kts index 075d2a1..5e9a94d 100644 --- a/simple-jwt-spring-boot-starter/build.gradle.kts +++ b/simple-jwt-spring-boot-starter/build.gradle.kts @@ -14,6 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI + plugins { java id("java-library") diff --git a/simple-serial-spring-boot-starter/build.gradle.kts b/simple-serial-spring-boot-starter/build.gradle.kts index e8b5cef..a2e1961 100644 --- a/simple-serial-spring-boot-starter/build.gradle.kts +++ b/simple-serial-spring-boot-starter/build.gradle.kts @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.net.URI plugins { java