diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..f24b4f35 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +[*.{kt,kts}] + +ktlint_standard_blank-line-before-declaration = disabled +ktlint_standard_chain-method-continuation = disabled +ktlint_standard_class-naming = disabled +ktlint_standard_class-signature = disabled +ktlint_standard_function-expression-body = disabled +ktlint_standard_function-naming = disabled +ktlint_standard_function-signature = disabled +ktlint_standard_if-else-wrapping = disabled +ktlint_standard_max-line-length = disabled +ktlint_standard_multiline-expression-wrapping = disabled +ktlint_standard_no-blank-line-in-list = disabled +ktlint_standard_no-empty-first-line-in-class-body = disabled +ktlint_standard_property-naming = disabled +ktlint_standard_trailing-comma-on-call-site = disabled diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 7a5a6a26..1f44fb74 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -20,10 +20,11 @@ jobs: distribution: 'zulu' java-version: 17 + - name: Set up Gradle + uses: gradle/actions/setup-gradle@v4.3.0 + - name: Assemble and Check - uses: gradle/gradle-build-action@v3 - with: - arguments: assemble check + run: ./gradlew assemble check - name: Upload reports if: failure() diff --git a/build.gradle.kts b/build.gradle.kts index 9ec7af09..bdbc9ae2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,15 +1,53 @@ plugins { java - id("com.diffplug.eclipse.apt") version "4.2.0" - id("com.diffplug.spotless") version "7.0.2" - id("org.domaframework.doma.compile") version "3.0.1" + alias(libs.plugins.eclipse.apt) + alias(libs.plugins.spotless) + alias(libs.plugins.doma.compile) +} + +// Retain a reference to rootProject.libs to make the version catalog accessible within allprojects and subprojects. +// See https://github.com/gradle/gradle/issues/16708 +val catalog = libs + +allprojects { + apply(plugin = "base") + apply(plugin = catalog.plugins.spotless.get().pluginId) + + repositories { + mavenCentral() + mavenLocal() + maven(url = "https://oss.sonatype.org/content/repositories/snapshots/") + } + + spotless { + lineEndings = com.diffplug.spotless.LineEnding.UNIX + java { + googleJavaFormat(catalog.google.java.format.get().version) + } + kotlinGradle { + ktlint(catalog.ktlint.get().version) + } + format("misc") { + target("**/*.gitignore", "**/*.md") + targetExclude("**/bin/**", "**/build/**") + leadingTabsToSpaces() + trimTrailingWhitespace() + endWithNewline() + } + } + + tasks { + build { + dependsOn(spotlessApply) + } + } } subprojects { apply(plugin = "java") - apply(plugin = "com.diffplug.eclipse.apt") - apply(plugin = "com.diffplug.spotless") - apply(plugin = "org.domaframework.doma.compile") + apply(plugin = catalog.plugins.eclipse.apt.get().pluginId) + apply(plugin = catalog.plugins.spotless.get().pluginId) + apply(plugin = catalog.plugins.doma.compile.get().pluginId) java { toolchain { @@ -27,21 +65,14 @@ subprojects { } } - repositories { - mavenCentral() - mavenLocal() - maven(url = "https://oss.sonatype.org/content/repositories/snapshots/") - } - dependencies { - val domaVersion: String by project - annotationProcessor("org.seasar.doma:doma-processor:${domaVersion}") - implementation("org.seasar.doma:doma-core:${domaVersion}") - implementation("org.seasar.doma:doma-slf4j:${domaVersion}") - runtimeOnly("ch.qos.logback:logback-classic:1.5.16") - runtimeOnly("com.h2database:h2:2.3.232") - testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.4") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.4") + annotationProcessor(catalog.doma.processor) + implementation(catalog.doma.core) + implementation(catalog.doma.slf4j) + runtimeOnly(catalog.logback.classic) + runtimeOnly(catalog.jdbc.h2) + testImplementation(catalog.junit.jupiter.api) + testRuntimeOnly(catalog.junit.jupiter.engine) } eclipse { @@ -49,7 +80,9 @@ subprojects { file { whenMerged { val classpath = this as org.gradle.plugins.ide.eclipse.model.Classpath - val folder = org.gradle.plugins.ide.eclipse.model.SourceFolder(".apt_generated", "bin/main") + val folder = + org.gradle.plugins.ide.eclipse.model + .SourceFolder(".apt_generated", "bin/main") classpath.entries.add(folder) val dir = file(folder.path) if (!dir.exists()) { @@ -65,10 +98,4 @@ subprojects { // Reset all Eclipse settings when "Refresh Gradle Project" is executed synchronizationTasks("cleanEclipse", "eclipse") } - - spotless { - java { - googleJavaFormat("1.23.0") - } - } } diff --git a/dao-style-basic/build.gradle.kts b/dao-style-basic/build.gradle.kts index 48f4bc5d..aa3f0c6f 100644 --- a/dao-style-basic/build.gradle.kts +++ b/dao-style-basic/build.gradle.kts @@ -5,15 +5,9 @@ plugins { tasks { compileJava { val aptOptions = extensions.getByType() - aptOptions.processorArgs = mapOf( - "doma.domain.converters" to "example.dao_style_basic.domain.DomainConverterProvider" - ) + aptOptions.processorArgs = + mapOf( + "doma.domain.converters" to "example.dao_style_basic.domain.DomainConverterProvider", + ) } } - -dependencies { - val domaVersion: String by project - annotationProcessor("org.seasar.doma:doma-processor:${domaVersion}") - implementation("org.seasar.doma:doma-core:${domaVersion}") - implementation("org.seasar.doma:doma-slf4j:${domaVersion}") -} diff --git a/dao-style-file/build.gradle.kts b/dao-style-file/build.gradle.kts index 0567188d..bcba03e3 100644 --- a/dao-style-file/build.gradle.kts +++ b/dao-style-file/build.gradle.kts @@ -5,15 +5,9 @@ plugins { tasks { compileJava { val aptOptions = extensions.getByType() - aptOptions.processorArgs = mapOf( - "doma.domain.converters" to "example.dao_style_file.domain.DomainConverterProvider" - ) + aptOptions.processorArgs = + mapOf( + "doma.domain.converters" to "example.dao_style_file.domain.DomainConverterProvider", + ) } } - -dependencies { - val domaVersion: String by project - annotationProcessor("org.seasar.doma:doma-processor:${domaVersion}") - implementation("org.seasar.doma:doma-core:${domaVersion}") - implementation("org.seasar.doma:doma-slf4j:${domaVersion}") -} diff --git a/dao-style-text/build.gradle.kts b/dao-style-text/build.gradle.kts index ce6f3d4c..9a728ff4 100644 --- a/dao-style-text/build.gradle.kts +++ b/dao-style-text/build.gradle.kts @@ -5,16 +5,9 @@ plugins { tasks { compileJava { val aptOptions = extensions.getByType() - aptOptions.processorArgs = mapOf( - "doma.domain.converters" to "example.dao_style_text.domain.DomainConverterProvider" - ) + aptOptions.processorArgs = + mapOf( + "doma.domain.converters" to "example.dao_style_text.domain.DomainConverterProvider", + ) } } - -dependencies { - val domaVersion: String by project - annotationProcessor("org.seasar.doma:doma-processor:${domaVersion}") - implementation("org.seasar.doma:doma-core:${domaVersion}") - implementation("org.seasar.doma:doma-slf4j:${domaVersion}") -} - diff --git a/dsl-style-java/build.gradle.kts b/dsl-style-java/build.gradle.kts index 2b2e3f75..c572e6a0 100644 --- a/dsl-style-java/build.gradle.kts +++ b/dsl-style-java/build.gradle.kts @@ -5,15 +5,9 @@ plugins { tasks { compileJava { val aptOptions = extensions.getByType() - aptOptions.processorArgs = mapOf( - "doma.domain.converters" to "example.dsl_style_java.domain.DomainConverterProvider" - ) + aptOptions.processorArgs = + mapOf( + "doma.domain.converters" to "example.dsl_style_java.domain.DomainConverterProvider", + ) } } - -dependencies { - val domaVersion: String by project - annotationProcessor("org.seasar.doma:doma-processor:${domaVersion}") - implementation("org.seasar.doma:doma-core:${domaVersion}") - implementation("org.seasar.doma:doma-slf4j:${domaVersion}") -} diff --git a/gradle.properties b/gradle.properties index 68ea36f9..4aac8bc1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,3 @@ -domaVersion=3.4.0 - # https://github.com/diffplug/spotless/issues/834 org.gradle.jvmargs=-Dfile.encoding=UTF-8 \ --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..dffcb72a --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,23 @@ +[versions] +doma = "3.4.0" +junit = "5.11.4" + +[libraries] +doma-core = { module = "org.seasar.doma:doma-core", version.ref = "doma"} +doma-processor = { module = "org.seasar.doma:doma-processor", version.ref = "doma"} +doma-slf4j = { module = "org.seasar.doma:doma-slf4j", version.ref = "doma"} + +jdbc-h2 = { module = "com.h2database:h2", version = "2.3.232" } + +logback-classic = { module = "ch.qos.logback:logback-classic", version = "1.5.16" } + +junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" } +junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" } + +google-java-format = { module = "com.google.googlejavaformat:google-java-format", version = "1.25.2" } +ktlint = { module = "com.pinterest.ktlint:ktlint-cli", version = "1.5.0" } + +[plugins] +spotless = { id = "com.diffplug.spotless", version = "7.0.2" } +doma-compile = { id = "org.domaframework.doma.compile", version = "3.0.1" } +eclipse-apt = { id = "com.diffplug.eclipse.apt", version = "4.2.0" } diff --git a/jpms-java/build.gradle.kts b/jpms-java/build.gradle.kts index c6ee6a54..815d3f33 100644 --- a/jpms-java/build.gradle.kts +++ b/jpms-java/build.gradle.kts @@ -6,19 +6,13 @@ plugins { tasks { compileJava { val aptOptions = extensions.getByType() - aptOptions.processorArgs = mapOf( - "doma.domain.converters" to "example.jpms_java.domain.DomainConverterProvider" - ) + aptOptions.processorArgs = + mapOf( + "doma.domain.converters" to "example.jpms_java.domain.DomainConverterProvider", + ) } } -dependencies { - val domaVersion: String by project - annotationProcessor("org.seasar.doma:doma-processor:${domaVersion}") - implementation("org.seasar.doma:doma-core:${domaVersion}") - implementation("org.seasar.doma:doma-slf4j:${domaVersion}") -} - application { mainClass.set("example.jpms_java.Main") }