Skip to content
Merged
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
43 changes: 1 addition & 42 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,45 +13,4 @@
*
* See the License for the specific language governing permissions and
* limitations under the License.
*/

val logbackVersion: String by project
val junitVersion: String by project
val slf4jVersion: String by project
val lombokVersion: String by project

subprojects {
apply(plugin = "java")
apply(plugin = "java-library")
apply(plugin = "maven-publish")
apply(plugin = "signing")

val implementation by configurations
val testImplementation by configurations
val compileOnly by configurations
val annotationProcessor by configurations
val testAnnotationProcessor by configurations
val testCompileOnly by configurations

tasks.withType<Jar> {
exclude("logback.xml")
}

repositories {
mavenCentral()
}

dependencies {
compileOnly("org.slf4j:slf4j-api:$slf4jVersion")
implementation("ch.qos.logback:logback-classic:$logbackVersion")
annotationProcessor("org.slf4j:slf4j-api:$slf4jVersion")

testCompileOnly("org.slf4j:slf4j-api:$slf4jVersion")
testImplementation("org.junit.jupiter:junit-jupiter:$junitVersion")
testAnnotationProcessor("org.slf4j:slf4j-api:$slf4jVersion")
}

tasks.withType<JavaCompile> {
options.encoding = "UTF-8"
}
}
*/
46 changes: 46 additions & 0 deletions devkit-bom/README.md
Original file line number Diff line number Diff line change
@@ -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 `<dependencyManagement>`:

```xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.onixbyte</groupId>
<artifactId>devkit-bom</artifactId>
<version>${devkit-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
```

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")
}
```

109 changes: 109 additions & 0 deletions devkit-bom/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
* 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
val projectUrl: String by project
val projectGithubUrl: String by project
val licenseName: String by project
val licenseUrl: 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<MavenPublication>("devkitBom") {
groupId = group.toString()
artifactId = "devkit-bom"
version = artefactVersion

pom {
name = "DevKit BOM"
description = "Using BOM could use unified OnixByte JDevKit."
url = projectUrl

licenses {
license {
name = licenseName
url = licenseUrl
}
}

scm {
connection = "scm:git:git://github.com:OnixByte/devkit-bom.git"
developerConnection = "scm:git:git://github.com:OnixByte/devkit-bom.git"
url = projectGithubUrl
}

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()
}
}
}
}
}
32 changes: 31 additions & 1 deletion devkit-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import java.net.URI

plugins {
java
id("java-library")
id("maven-publish")
id("signing")
}

val artefactVersion: String by project
val projectUrl: String by project
val projectGithubUrl: String by project
Expand All @@ -26,13 +32,37 @@ val licenseUrl: String by project
group = "com.onixbyte"
version = artefactVersion

repositories {
mavenCentral()
}

java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
withSourcesJar()
withJavadocJar()
}

tasks.withType<JavaCompile> {
options.encoding = "UTF-8"
}

tasks.withType<Jar> {
exclude("logback.xml")
}

dependencies {
val slf4jVersion: String by project
val logbackVersion: String by project
val junitVersion: String by project

compileOnly("org.slf4j:slf4j-api:$slf4jVersion")
implementation("ch.qos.logback:logback-classic:$logbackVersion")

testCompileOnly("org.slf4j:slf4j-api:$slf4jVersion")
testImplementation("org.junit.jupiter:junit-jupiter:$junitVersion")
}

tasks.test {
useJUnitPlatform()
}
Expand Down
33 changes: 30 additions & 3 deletions devkit-utils/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import java.net.URI

plugins {
java
id("java-library")
id("maven-publish")
id("signing")
}

val artefactVersion: String by project
val projectUrl: String by project
val projectGithubUrl: String by project
Expand All @@ -26,8 +32,8 @@ val licenseUrl: String by project
group = "com.onixbyte"
version = artefactVersion

dependencies {
implementation(project(":devkit-core"))
repositories {
mavenCentral()
}

java {
Expand All @@ -37,6 +43,27 @@ java {
withJavadocJar()
}

tasks.withType<JavaCompile> {
options.encoding = "UTF-8"
}

tasks.withType<Jar> {
exclude("logback.xml")
}

dependencies {
val slf4jVersion: String by project
val logbackVersion: String by project
val junitVersion: String by project

compileOnly("org.slf4j:slf4j-api:$slf4jVersion")
implementation("ch.qos.logback:logback-classic:$logbackVersion")
implementation(project(":devkit-core"))

testCompileOnly("org.slf4j:slf4j-api:$slf4jVersion")
testImplementation("org.junit.jupiter:junit-jupiter:$junitVersion")
}

tasks.test {
useJUnitPlatform()
}
Expand Down
14 changes: 7 additions & 7 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
springBootVersion=3.4.2
33 changes: 30 additions & 3 deletions guid/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import java.net.URI

plugins {
java
id("java-library")
id("maven-publish")
id("signing")
}

val artefactVersion: String by project
val projectUrl: String by project
val projectGithubUrl: String by project
Expand All @@ -26,8 +32,8 @@ val licenseUrl: String by project
group = "com.onixbyte"
version = artefactVersion

dependencies {
implementation(project(":devkit-core"))
repositories {
mavenCentral()
}

java {
Expand All @@ -37,6 +43,27 @@ java {
withJavadocJar()
}

tasks.withType<JavaCompile> {
options.encoding = "UTF-8"
}

tasks.withType<Jar> {
exclude("logback.xml")
}

dependencies {
val slf4jVersion: String by project
val logbackVersion: String by project
val junitVersion: String by project

compileOnly("org.slf4j:slf4j-api:$slf4jVersion")
implementation("ch.qos.logback:logback-classic:$logbackVersion")
implementation(project(":devkit-core"))

testCompileOnly("org.slf4j:slf4j-api:$slf4jVersion")
testImplementation("org.junit.jupiter:junit-jupiter:$junitVersion")
}

tasks.test {
useJUnitPlatform()
}
Expand Down
Loading