Skip to content

Commit 358b444

Browse files
authored
Merge pull request #192 from domaframework/refactor/kotlin-dsl
Rewrite Gradle build script using Kotlin DSL to improve maintainability
2 parents bd1f0e2 + a29f10b commit 358b444

File tree

9 files changed

+484
-124
lines changed

9 files changed

+484
-124
lines changed

codegen-test/build.gradle

Lines changed: 0 additions & 121 deletions
This file was deleted.

codegen-test/build.gradle.kts

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
import org.h2.Driver
2+
import org.seasar.doma.gradle.codegen.desc.LanguageType
3+
import org.seasar.doma.gradle.codegen.jdbc.SimpleDataSource
4+
5+
buildscript {
6+
repositories {
7+
mavenCentral()
8+
mavenLocal()
9+
maven {
10+
url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
11+
}
12+
flatDir {
13+
dirs("../codegen")
14+
}
15+
}
16+
dependencies {
17+
val h2Version: String = properties["h2Version"] as String
18+
classpath("org.domaframework.doma:codegen")
19+
classpath("com.h2database:h2:$h2Version")
20+
classpath("mysql:mysql-connector-java:8.0.33")
21+
}
22+
}
23+
24+
plugins {
25+
id("java")
26+
id("org.jetbrains.kotlin.jvm") version "2.0.20"
27+
id("org.domaframework.doma.compile") version "3.0.1"
28+
id("org.domaframework.doma.codegen")
29+
}
30+
31+
java {
32+
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
33+
}
34+
35+
repositories {
36+
mavenLocal()
37+
mavenCentral()
38+
}
39+
40+
dependencies {
41+
val domaVersion: String by project
42+
val h2Version: String by project
43+
44+
implementation("org.seasar.doma:doma-core:$domaVersion")
45+
annotationProcessor("org.seasar.doma:doma-processor:$domaVersion")
46+
testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.2")
47+
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.2")
48+
testRuntimeOnly("com.h2database:h2:$h2Version")
49+
}
50+
51+
val _url = "jdbc:h2:file:$projectDir/data/db"
52+
val _user = ""
53+
val _password = ""
54+
55+
domaCodeGen {
56+
register("java") {
57+
val basePackage = "codegen"
58+
url.set(_url.toString())
59+
user.set(_user)
60+
password.set(_password)
61+
entity {
62+
packageName = "${basePackage}.entity"
63+
}
64+
dao {
65+
packageName = "${basePackage}.dao"
66+
}
67+
}
68+
register("kotlin") {
69+
val basePackage = "codegen"
70+
url.set(_url.toString())
71+
user.set(_user)
72+
password.set(_password)
73+
languageType.set(LanguageType.KOTLIN)
74+
entity {
75+
packageName = "${basePackage}.entity"
76+
}
77+
dao {
78+
packageName = "${basePackage}.dao"
79+
}
80+
}
81+
}
82+
83+
tasks {
84+
test {
85+
useJUnitPlatform()
86+
}
87+
88+
val deleteSrc = register("deleteSrc") {
89+
doLast {
90+
delete("src")
91+
}
92+
}
93+
94+
val createDb = register("createDb") {
95+
doLast {
96+
val ds = SimpleDataSource()
97+
ds.setDriver(Driver())
98+
ds.setUrl(_url)
99+
ds.setUser(_user)
100+
ds.setPassword(_password)
101+
102+
val sql = """
103+
drop all objects;
104+
105+
create table department(
106+
department_id integer not null primary key,
107+
department_no integer not null,
108+
department_name varchar(20),
109+
location varchar(20) default 'tokyo',
110+
version integer
111+
);
112+
113+
create table employee(
114+
employee_id integer not null primary key,
115+
employee_no integer not null,
116+
employee_name varchar(20)
117+
);
118+
"""
119+
ds.connection.use {
120+
it.createStatement().use {
121+
it.execute(sql)
122+
}
123+
}
124+
}
125+
}
126+
127+
getByName("domaCodeGenJavaDbMeta").dependsOn(deleteSrc, createDb)
128+
getByName("domaCodeGenKotlinDbMeta").dependsOn(deleteSrc, createDb)
129+
}

codegen-test/gradle.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
domaVersion=3.0.1
2+
h2Version=2.3.232

codegen-test/settings.gradle

Lines changed: 0 additions & 3 deletions
This file was deleted.

codegen-test/settings.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
rootProject.name = "codegen-test"
2+
3+
pluginManagement {
4+
includeBuild("../codegen")
5+
}
42.4 KB
Binary file not shown.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
4+
networkTimeout=10000
5+
validateDistributionUrl=true
6+
zipStoreBase=GRADLE_USER_HOME
7+
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)