From 4fb85a52e42e67df2f2a5e2b8f0d107ca52b2158 Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Mon, 26 Oct 2020 01:27:35 +0100 Subject: [PATCH] Use Gradle ! --- .gitignore | 92 +----- Dockerfile | 28 +- build.gradle.properties | 1 + buildSrc/build.gradle.kts | 15 + .../src/main/kotlin/be/simplenotes/CssTask.kt | 52 ++++ .../src/main/kotlin/be/simplenotes/Libs.kt | 42 +++ .../kotlin/be/simplenotes/app-css.gradle.kts | 15 + .../be/simplenotes/app-docker.gradle.kts | 39 +++ .../be/simplenotes/app-shadow.gradle.kts | 47 ++++ .../kotlin/be/simplenotes/base.gradle.kts | 55 ++++ .../exclusions/excluded-resources.txt | 14 + .../src/main/resources/exclusions/guava.txt | 261 ++++++++++++++++++ .../src/main/resources/exclusions/logback.txt | 2 + .../src/main/resources/exclusions/others.txt | 6 + css/package.json | 3 +- deploy-docker-hub.sh | 8 - pom.xml | 250 ----------------- settings.gradle.kts | 8 + simplenotes-app/build.gradle.kts | 32 +++ simplenotes-app/pom.xml | 203 -------------- simplenotes-config/build.gradle.kts | 9 + simplenotes-config/pom.xml | 21 -- simplenotes-domain/build.gradle.kts | 29 ++ simplenotes-domain/pom.xml | 113 -------- simplenotes-persistance/build.gradle.kts | 25 ++ simplenotes-persistance/pom.xml | 84 ------ .../be/simplenotes/persistance/HealthCheck.kt | 1 + .../persistance/converters/NoteConverter.kt | 5 +- .../persistance/converters/UserConverter.kt | 5 +- simplenotes-search/build.gradle.kts | 18 ++ simplenotes-search/pom.xml | 71 ----- simplenotes-test-resources/pom.xml | 28 -- simplenotes-types/build.gradle.kts | 10 + simplenotes-types/pom.xml | 21 -- simplenotes-views/build.gradle.kts | 14 + simplenotes-views/pom.xml | 41 --- 36 files changed, 707 insertions(+), 961 deletions(-) create mode 100644 build.gradle.properties create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/src/main/kotlin/be/simplenotes/CssTask.kt create mode 100644 buildSrc/src/main/kotlin/be/simplenotes/Libs.kt create mode 100644 buildSrc/src/main/kotlin/be/simplenotes/app-css.gradle.kts create mode 100644 buildSrc/src/main/kotlin/be/simplenotes/app-docker.gradle.kts create mode 100644 buildSrc/src/main/kotlin/be/simplenotes/app-shadow.gradle.kts create mode 100644 buildSrc/src/main/kotlin/be/simplenotes/base.gradle.kts create mode 100644 buildSrc/src/main/resources/exclusions/excluded-resources.txt create mode 100644 buildSrc/src/main/resources/exclusions/guava.txt create mode 100644 buildSrc/src/main/resources/exclusions/logback.txt create mode 100644 buildSrc/src/main/resources/exclusions/others.txt delete mode 100755 deploy-docker-hub.sh delete mode 100644 pom.xml create mode 100644 settings.gradle.kts create mode 100644 simplenotes-app/build.gradle.kts delete mode 100644 simplenotes-app/pom.xml create mode 100644 simplenotes-config/build.gradle.kts delete mode 100644 simplenotes-config/pom.xml create mode 100644 simplenotes-domain/build.gradle.kts delete mode 100644 simplenotes-domain/pom.xml create mode 100644 simplenotes-persistance/build.gradle.kts delete mode 100644 simplenotes-persistance/pom.xml create mode 100644 simplenotes-search/build.gradle.kts delete mode 100644 simplenotes-search/pom.xml delete mode 100644 simplenotes-test-resources/pom.xml create mode 100644 simplenotes-types/build.gradle.kts delete mode 100644 simplenotes-types/pom.xml create mode 100644 simplenotes-views/build.gradle.kts delete mode 100644 simplenotes-views/pom.xml diff --git a/.gitignore b/.gitignore index a8afa40..5569e12 100644 --- a/.gitignore +++ b/.gitignore @@ -7,18 +7,9 @@ *.nar hs_err_pid* -# Maven -target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -pom.xml.bak -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties -.mvn/wrapper/maven-wrapper.jar +# Gradle +build/ +.gradle # IntelliJ out/ @@ -28,11 +19,8 @@ out/ *.ipr *.iws -# Vue -node_modules -/dist - # Local env files +.env .env.local .env.*.local @@ -49,85 +37,13 @@ pids *.seed *.pid.lock -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - # Dependency directories node_modules/ jspm_packages/ -# TypeScript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - # Yarn Integrity file .yarn-integrity -# dotenv environment variables file -.env - -# parcel-bundler cache (https://parceljs.org/) -.cache - -# next.js build output -.next - -# nuxt.js build output -.nuxt - -# Nuxt generate -dist - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless - -# IDE / Editor -.idea - -# Service worker -sw.* -*.private.env.json - -# Certificates -data/ -letsencrypt/ - -# generated resources -simplenotes-app/src/main/resources/css-manifest.json -simplenotes-app/src/main/resources/static/styles* - # h2 db *.db diff --git a/Dockerfile b/Dockerfile index 1f5c8ee..1ee004d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,29 +1,3 @@ -FROM maven:3.6.3-jdk-14 as builder - -WORKDIR /tmp - -# Cache dependencies -COPY pom.xml . -COPY simplenotes-test-resources/pom.xml simplenotes-test-resources/pom.xml -COPY simplenotes-types/pom.xml simplenotes-types/pom.xml -COPY simplenotes-config/pom.xml simplenotes-config/pom.xml -COPY simplenotes-persistance/pom.xml simplenotes-persistance/pom.xml -COPY simplenotes-search/pom.xml simplenotes-search/pom.xml -COPY simplenotes-domain/pom.xml simplenotes-domain/pom.xml -COPY simplenotes-app/pom.xml simplenotes-app/pom.xml - -RUN mvn verify clean --fail-never - -COPY simplenotes-test-resources/src simplenotes-test-resources/src -COPY simplenotes-types/src simplenotes-types/src -COPY simplenotes-config/src simplenotes-config/src -COPY simplenotes-persistance/src simplenotes-persistance/src -COPY simplenotes-search/src simplenotes-search/src -COPY simplenotes-domain/src simplenotes-domain/src -COPY simplenotes-app/src simplenotes-app/src - -RUN mvn -Dstyle.color=always package - FROM openjdk:14-alpine as jdkbuilder RUN apk add --no-cache binutils @@ -46,8 +20,8 @@ RUN chown -R $APPLICATION_USER /app USER $APPLICATION_USER -COPY --from=builder /tmp/simplenotes-app/target/simplenotes-app-*.jar /app/simplenotes.jar COPY --from=jdkbuilder /myjdk /myjdk +COPY simplenotes-app/build/libs/app-*-all.jar /app/simplenotes.jar WORKDIR /app CMD ["/myjdk/bin/java", "-server", "-XX:+UnlockExperimentalVMOptions", "-Xms64m", "-Xmx256m", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-XX:+UseStringDeduplication", "-jar", "simplenotes.jar"] diff --git a/build.gradle.properties b/build.gradle.properties new file mode 100644 index 0000000..1608900 --- /dev/null +++ b/build.gradle.properties @@ -0,0 +1 @@ +org.gradle.caching=true diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 0000000..40961cb --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + `kotlin-dsl` + kotlin("jvm") version "1.4.10" + id("com.github.johnrengelman.shadow") version "6.1.0" +} + +repositories { + gradlePluginPortal() + maven { setUrl("https://kotlin.bintray.com/kotlinx") } +} + +dependencies { + implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10") + implementation("com.github.jengelman.gradle.plugins:shadow:6.1.0") +} diff --git a/buildSrc/src/main/kotlin/be/simplenotes/CssTask.kt b/buildSrc/src/main/kotlin/be/simplenotes/CssTask.kt new file mode 100644 index 0000000..93d5533 --- /dev/null +++ b/buildSrc/src/main/kotlin/be/simplenotes/CssTask.kt @@ -0,0 +1,52 @@ +package be.simplenotes + +import org.gradle.api.DefaultTask +import org.gradle.api.GradleException +import org.gradle.api.tasks.InputDirectory +import org.gradle.api.tasks.OutputDirectory +import org.gradle.api.tasks.TaskAction +import java.io.File +import java.lang.ProcessBuilder.Redirect.PIPE +import java.util.concurrent.TimeUnit +import kotlin.concurrent.thread + +open class CssTask : DefaultTask() { + + private val root = project.file(".").parent + + @get:InputDirectory + val templatesDir = File(root, "simplenotes-views/src/main/kotlin/be/simplenotes/views") + + @get:InputDirectory + val postCssDir = File(project.rootDir, "css/src") + + @get:OutputDirectory + val outputRootDir = File(project.buildDir, "generated-resources/css") + + private val yarnRoot = File(project.rootDir, "css") + private val cssIndex = File(postCssDir, "styles.pcss") + + private val cssOutput = File(outputRootDir, "static/styles.css") + private val manifestOutput = File(outputRootDir, "css-manifest.json") + + @TaskAction + fun generateCss() { + // TODO: auto yarn install ? + + outputRootDir.listFiles()?.let { it.forEach { it.delete() } } + + ProcessBuilder("yarn", "run", "postcss", "build", "$cssIndex", "--output", "$cssOutput") + .apply { environment()["MANIFEST"] = "$manifestOutput" } + .redirectOutput(PIPE) + .redirectError(PIPE) + .directory(yarnRoot) + .start() + .apply { + thread { inputStream.use { it.copyTo(System.out) } } + thread { errorStream.use { it.copyTo(System.out) } } + waitFor(30, TimeUnit.SECONDS) + if (exitValue() != 0) throw GradleException(":/") + } + } + +} diff --git a/buildSrc/src/main/kotlin/be/simplenotes/Libs.kt b/buildSrc/src/main/kotlin/be/simplenotes/Libs.kt new file mode 100644 index 0000000..665aeba --- /dev/null +++ b/buildSrc/src/main/kotlin/be/simplenotes/Libs.kt @@ -0,0 +1,42 @@ +@file:Suppress("SpellCheckingInspection") + +package be.simplenotes + +object Libs { + const val arrowCore = "io.arrow-kt:arrow-core:0.11.0" + const val commonsCompress = "org.apache.commons:commons-compress:1.20" + const val flexmark = "com.vladsch.flexmark:flexmark:0.62.2" + const val flexmarkGfmTasklist = "com.vladsch.flexmark:flexmark-ext-gfm-tasklist:0.62.2" + const val flywayCore = "org.flywaydb:flyway-core:6.5.4" + const val h2 = "com.h2database:h2:1.4.200" + const val hikariCP = "com.zaxxer:HikariCP:3.4.3" + const val http4kCore = "org.http4k:http4k-core:3.268.0" + const val javaJwt = "com.auth0:java-jwt:3.10.3" + const val javaxServlet = "javax.servlet:javax.servlet-api:4.0.1" + const val jbcrypt = "org.mindrot:jbcrypt:0.4" + const val jettyServer = "org.eclipse.jetty:jetty-server:9.4.32.v20200930" + const val jettyServlet = "org.eclipse.jetty:jetty-servlet:9.4.32.v20200930" + const val koinCore = "org.koin:koin-core:2.1.6" + const val konform = "io.konform:konform-jvm:0.2.0" + const val kotlinxHtml = "org.jetbrains.kotlinx:kotlinx-html-jvm:0.7.1" + const val kotlinxSerializationJson = "org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.0.0" + const val ktormCore = "me.liuwj.ktorm:ktorm-core:3.0.0" + const val ktormMysql = "me.liuwj.ktorm:ktorm-support-mysql:3.0.0" + const val logbackClassic = "ch.qos.logback:logback-classic:1.2.3" + const val luceneAnalyzersCommon = "org.apache.lucene:lucene-analyzers-common:8.6.1" + const val luceneCore = "org.apache.lucene:lucene-core:8.6.1" + const val luceneQueryParser = "org.apache.lucene:lucene-queryparser:8.6.1" + const val mapstruct = "org.mapstruct:mapstruct:1.4.1.Final" + const val mapstructProcessor = "org.mapstruct:mapstruct-processor:1.4.1.Final" + const val mariadbClient = "org.mariadb.jdbc:mariadb-java-client:2.6.2" + const val owaspHtmlSanitizer = "com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20200713.1" + const val prettytime ="org.ocpsoft.prettytime:prettytime:4.0.5.Final" + const val slf4jApi = "org.slf4j:slf4j-api:1.7.25" + const val snakeyaml = "org.yaml:snakeyaml:1.26" + + const val assertJ = "org.assertj:assertj-core:3.16.1" + const val hamkrest = "com.natpryce:hamkrest:1.7.0.3" + const val http4kTestingHamkrest = "org.http4k:http4k-testing-hamkrest:3.268.0" + const val junit = "org.junit.jupiter:junit-jupiter:5.6.2" + const val mockk = "io.mockk:mockk:1.10.0" +} diff --git a/buildSrc/src/main/kotlin/be/simplenotes/app-css.gradle.kts b/buildSrc/src/main/kotlin/be/simplenotes/app-css.gradle.kts new file mode 100644 index 0000000..6f21cf3 --- /dev/null +++ b/buildSrc/src/main/kotlin/be/simplenotes/app-css.gradle.kts @@ -0,0 +1,15 @@ +package be.simplenotes + +import org.gradle.kotlin.dsl.register + +plugins { + java apply false +} + +tasks.register("css") + +sourceSets { + val main by getting + val root = file("$buildDir/generated-resources/css") + main.resources.srcDir(root) +} diff --git a/buildSrc/src/main/kotlin/be/simplenotes/app-docker.gradle.kts b/buildSrc/src/main/kotlin/be/simplenotes/app-docker.gradle.kts new file mode 100644 index 0000000..0a7e953 --- /dev/null +++ b/buildSrc/src/main/kotlin/be/simplenotes/app-docker.gradle.kts @@ -0,0 +1,39 @@ +package be.simplenotes + +import java.util.concurrent.TimeUnit.MINUTES +import kotlin.concurrent.thread + +fun runCommand(vararg args: String, onError: () -> Unit) { + logging.captureStandardOutput(LogLevel.INFO) + ProcessBuilder(*args) + .redirectOutput(ProcessBuilder.Redirect.PIPE) + .redirectError(ProcessBuilder.Redirect.PIPE) + .directory(rootProject.projectDir) + .start() + .apply { + thread { inputStream.use { it.copyTo(System.out) } } + thread { errorStream.use { it.copyTo(System.out) } } + waitFor(2, MINUTES) + if (exitValue() != 0) onError() + } +} + +tasks.create("dockerBuild") { + dependsOn("package") + + doLast { + runCommand("docker", "build", "-t", "hubv/simplenotes:latest", ".") { + throw GradleException("Docker build failed") + } + } +} + +tasks.create("dockerPush") { + dependsOn("dockerBuild") + + doLast { + runCommand("docker", "push", "hubv/simplenotes:latest") { + throw GradleException("Docker Push failed") + } + } +} diff --git a/buildSrc/src/main/kotlin/be/simplenotes/app-shadow.gradle.kts b/buildSrc/src/main/kotlin/be/simplenotes/app-shadow.gradle.kts new file mode 100644 index 0000000..04b2f19 --- /dev/null +++ b/buildSrc/src/main/kotlin/be/simplenotes/app-shadow.gradle.kts @@ -0,0 +1,47 @@ +package be.simplenotes + +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +plugins { + id("com.github.johnrengelman.shadow") +} + +tasks.withType { + + archiveBaseName.set("app") + manifest.attributes["Main-Class"] = "be.simplenotes.app.SimpleNotesKt" + + mergeServiceFiles() + + // minimize() + + // include("org.mariadb.jdbc:mariadb-java-client") + // include("com.h2database:h2") + // include("org.jetbrains.kotlin:kotlin-reflect") + // include("org.eclipse.jetty:*") + // include("org.apache.lucene:*") + // include("org.ocpsoft.prettytime:prettytime") + + File(rootProject.projectDir, "buildSrc/src/main/resources/exclusions") + .listFiles()!! + .flatMap { + it.readLines() + .asSequence() + .map { it.trim() } + .filterNot { it.isBlank() } + .filterNot { it.startsWith("#") } + .asIterable() + }.forEach { exclude(it) } + +} + +tasks.create("package") { + rootProject.subprojects.forEach { dependsOn(":${it.name}:test") } + + dependsOn("shadowJar") + dependsOn("css") + + doLast { + println("SimpleNotes Packaged !") + } +} diff --git a/buildSrc/src/main/kotlin/be/simplenotes/base.gradle.kts b/buildSrc/src/main/kotlin/be/simplenotes/base.gradle.kts new file mode 100644 index 0000000..59d3f73 --- /dev/null +++ b/buildSrc/src/main/kotlin/be/simplenotes/base.gradle.kts @@ -0,0 +1,55 @@ +package be.simplenotes + +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + java + kotlin("jvm") + `java-library` +} + +repositories { + mavenLocal() + mavenCentral() + jcenter() + maven { url = uri("https://dl.bintray.com/arrow-kt/arrow-kt/") } + maven { url = uri("https://kotlin.bintray.com/kotlinx") } +} + +group = "be.simplenotes" +version = "1.0-SNAPSHOT" + +dependencies { + implementation(kotlin("stdlib-jdk8")) +} + +tasks.withType { + useJUnitPlatform() +} + +java { + sourceCompatibility = JavaVersion.VERSION_14 + targetCompatibility = JavaVersion.VERSION_14 +} + +sourceSets { + val test by getting + test.resources.srcDir("${rootProject.projectDir}/simplenotes-test-resources/src/test/resources") +} + +tasks.withType { + kotlinOptions { + jvmTarget = "14" + javaParameters = true + freeCompilerArgs = listOf( + "-Xinline-classes", + "-Xno-param-assertions", + "-Xno-call-assertions", + "-Xno-receiver-assertions" + ) + } +} + +tasks.withType { + options.encoding = "UTF-8" +} diff --git a/buildSrc/src/main/resources/exclusions/excluded-resources.txt b/buildSrc/src/main/resources/exclusions/excluded-resources.txt new file mode 100644 index 0000000..df200aa --- /dev/null +++ b/buildSrc/src/main/resources/exclusions/excluded-resources.txt @@ -0,0 +1,14 @@ +META-INF/maven/** +META-INF/proguard/** +META-INF/*.kotlin_module +META-INF/DEPENDENCIES* +META-INF/NOTICE* +META-INF/LICENSE* +LICENSE* +META-INF/README* +META-INF/native-image/** + +# Jetty +about.html +jetty-dir.css +server-ssl-cert.pem diff --git a/buildSrc/src/main/resources/exclusions/guava.txt b/buildSrc/src/main/resources/exclusions/guava.txt new file mode 100644 index 0000000..13dd680 --- /dev/null +++ b/buildSrc/src/main/resources/exclusions/guava.txt @@ -0,0 +1,261 @@ +com/google/common/util/** +com/google/common/eventbus/** +com/google/common/reflect/** +com/google/common/escape/** +com/google/common/graph/** +com/google/common/html/** +com/google/common/hash/** +com/google/common/xml/** +com/google/common/io/** +com/google/common/cache/** +com/google/common/net/** + +# Collections +com/google/common/collect/AbstractBiMap$1.class +com/google/common/collect/AbstractBiMap$BiMapEntry.class +com/google/common/collect/AbstractBiMap$EntrySet.class +com/google/common/collect/AbstractBiMap$Inverse.class +com/google/common/collect/AbstractBiMap$KeySet.class +com/google/common/collect/AbstractBiMap$ValueSet.class +com/google/common/collect/AbstractBiMap.class +com/google/common/collect/AbstractSortedKeySortedSetMultimap.class +com/google/common/collect/AbstractSortedMultiset$1DescendingMultisetImpl.class +com/google/common/collect/AbstractSortedMultiset.class +com/google/common/collect/AbstractTable$1.class +com/google/common/collect/AbstractTable$CellSet.class +com/google/common/collect/AbstractTable$Values.class +com/google/common/collect/AbstractTable.class +com/google/common/collect/ArrayListMultimap.class +com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.class +com/google/common/collect/ArrayTable$1.class +com/google/common/collect/ArrayTable$2.class +com/google/common/collect/ArrayTable$3.class +com/google/common/collect/ArrayTable$ArrayMap$1.class +com/google/common/collect/ArrayTable$ArrayMap$2.class +com/google/common/collect/ArrayTable$ArrayMap.class +com/google/common/collect/ArrayTable$Column.class +com/google/common/collect/ArrayTable$ColumnMap.class +com/google/common/collect/ArrayTable$Row.class +com/google/common/collect/ArrayTable$RowMap.class +com/google/common/collect/ArrayTable.class +com/google/common/collect/ClassToInstanceMap.class +com/google/common/collect/CompactHashMap$1.class +com/google/common/collect/CompactHashMap$2.class +com/google/common/collect/CompactHashMap$3.class +com/google/common/collect/CompactHashMap$EntrySetView.class +com/google/common/collect/CompactHashMap$Itr.class +com/google/common/collect/CompactHashMap$KeySetView.class +com/google/common/collect/CompactHashMap$MapEntry.class +com/google/common/collect/CompactHashMap$ValuesView.class +com/google/common/collect/CompactHashMap.class +com/google/common/collect/CompactHashSet$1.class +com/google/common/collect/CompactHashSet.class +com/google/common/collect/CompactLinkedHashMap$1EntrySetImpl.class +com/google/common/collect/CompactLinkedHashMap$1KeySetImpl.class +com/google/common/collect/CompactLinkedHashMap$1ValuesImpl.class +com/google/common/collect/CompactLinkedHashMap.class +com/google/common/collect/CompactLinkedHashSet.class +com/google/common/collect/Comparators.class +com/google/common/collect/ComputationException.class +com/google/common/collect/ConcurrentHashMultiset$1.class +com/google/common/collect/ConcurrentHashMultiset$2.class +com/google/common/collect/ConcurrentHashMultiset$3.class +com/google/common/collect/ConcurrentHashMultiset$EntrySet.class +com/google/common/collect/ConcurrentHashMultiset$FieldSettersHolder.class +com/google/common/collect/ConcurrentHashMultiset.class +com/google/common/collect/DenseImmutableTable$1.class +com/google/common/collect/DenseImmutableTable$Column.class +com/google/common/collect/DenseImmutableTable$ColumnMap.class +com/google/common/collect/DenseImmutableTable$ImmutableArrayMap$1.class +com/google/common/collect/DenseImmutableTable$ImmutableArrayMap.class +com/google/common/collect/DenseImmutableTable$Row.class +com/google/common/collect/DenseImmutableTable$RowMap.class +com/google/common/collect/DenseImmutableTable.class +com/google/common/collect/DescendingImmutableSortedMultiset.class +com/google/common/collect/DescendingMultiset$1EntrySetImpl.class +com/google/common/collect/DescendingMultiset.class +com/google/common/collect/EnumBiMap.class +com/google/common/collect/EnumHashBiMap.class +com/google/common/collect/EnumMultiset$1.class +com/google/common/collect/EnumMultiset$2$1.class +com/google/common/collect/EnumMultiset$2.class +com/google/common/collect/EnumMultiset$Itr.class +com/google/common/collect/EnumMultiset.class +com/google/common/collect/EvictingQueue.class +com/google/common/collect/ForwardingBlockingDeque.class +com/google/common/collect/ForwardingDeque.class +com/google/common/collect/ForwardingImmutableCollection.class +com/google/common/collect/ForwardingImmutableList.class +com/google/common/collect/ForwardingImmutableMap.class +com/google/common/collect/ForwardingImmutableSet.class +com/google/common/collect/ForwardingIterator.class +com/google/common/collect/ForwardingListIterator.class +com/google/common/collect/ForwardingListMultimap.class +com/google/common/collect/ForwardingNavigableMap$StandardDescendingMap$1.class +com/google/common/collect/ForwardingNavigableMap$StandardDescendingMap.class +com/google/common/collect/ForwardingNavigableMap$StandardNavigableKeySet.class +com/google/common/collect/ForwardingNavigableMap.class +com/google/common/collect/ForwardingQueue.class +com/google/common/collect/ForwardingSetMultimap.class +com/google/common/collect/ForwardingSortedMultiset$StandardDescendingMultiset.class +com/google/common/collect/ForwardingSortedMultiset$StandardElementSet.class +com/google/common/collect/ForwardingSortedMultiset.class +com/google/common/collect/ForwardingSortedSetMultimap.class +com/google/common/collect/ForwardingTable.class +com/google/common/collect/GeneralRange.class +com/google/common/collect/GwtTransient.class +com/google/common/collect/HashBasedTable$Factory.class +com/google/common/collect/HashBasedTable.class +com/google/common/collect/HashBiMap$1$MapEntry.class +com/google/common/collect/HashBiMap$1.class +com/google/common/collect/HashBiMap$BiEntry.class +com/google/common/collect/HashBiMap$Inverse$1$InverseEntry.class +com/google/common/collect/HashBiMap$Inverse$1.class +com/google/common/collect/HashBiMap$Inverse$InverseKeySet$1.class +com/google/common/collect/HashBiMap$Inverse$InverseKeySet.class +com/google/common/collect/HashBiMap$Inverse.class +com/google/common/collect/HashBiMap$InverseSerializedForm.class +com/google/common/collect/HashBiMap$Itr.class +com/google/common/collect/HashBiMap$KeySet$1.class +com/google/common/collect/HashBiMap$KeySet.class +com/google/common/collect/HashBiMap.class +com/google/common/collect/HashMultimap.class +com/google/common/collect/HashMultimapGwtSerializationDependencies.class +com/google/common/collect/ImmutableClassToInstanceMap$1.class +com/google/common/collect/ImmutableClassToInstanceMap$Builder.class +com/google/common/collect/ImmutableClassToInstanceMap.class +com/google/common/collect/ImmutableSortedMultiset$Builder.class +com/google/common/collect/ImmutableSortedMultiset$SerializedForm.class +com/google/common/collect/ImmutableSortedMultiset.class +com/google/common/collect/ImmutableSortedMultisetFauxverideShim.class +com/google/common/collect/ImmutableTable$1.class +com/google/common/collect/ImmutableTable$Builder.class +com/google/common/collect/ImmutableTable$CollectorState.class +com/google/common/collect/ImmutableTable$MutableCell.class +com/google/common/collect/ImmutableTable$SerializedForm.class +com/google/common/collect/ImmutableTable.class +com/google/common/collect/Interner.class +com/google/common/collect/Interners$1.class +com/google/common/collect/Interners$InternerBuilder.class +com/google/common/collect/Interners$InternerFunction.class +com/google/common/collect/Interners$InternerImpl.class +com/google/common/collect/Interners.class +com/google/common/collect/LinkedHashMultimap$1.class +com/google/common/collect/LinkedHashMultimap$ValueEntry.class +com/google/common/collect/LinkedHashMultimap$ValueSet$1.class +com/google/common/collect/LinkedHashMultimap$ValueSet.class +com/google/common/collect/LinkedHashMultimap$ValueSetLink.class +com/google/common/collect/LinkedHashMultimap.class +com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.class +com/google/common/collect/LinkedListMultimap$1.class +com/google/common/collect/LinkedListMultimap$1EntriesImpl.class +com/google/common/collect/LinkedListMultimap$1KeySetImpl.class +com/google/common/collect/LinkedListMultimap$1ValuesImpl$1.class +com/google/common/collect/LinkedListMultimap$1ValuesImpl.class +com/google/common/collect/LinkedListMultimap$DistinctKeyIterator.class +com/google/common/collect/LinkedListMultimap$KeyList.class +com/google/common/collect/LinkedListMultimap$Node.class +com/google/common/collect/LinkedListMultimap$NodeIterator.class +com/google/common/collect/LinkedListMultimap$ValueForKeyIterator.class +com/google/common/collect/LinkedListMultimap.class +com/google/common/collect/MinMaxPriorityQueue$1.class +com/google/common/collect/MinMaxPriorityQueue$Builder.class +com/google/common/collect/MinMaxPriorityQueue$Heap.class +com/google/common/collect/MinMaxPriorityQueue$MoveDesc.class +com/google/common/collect/MinMaxPriorityQueue$QueueIterator.class +com/google/common/collect/MinMaxPriorityQueue.class +com/google/common/collect/MoreCollectors$ToOptionalState.class +com/google/common/collect/MoreCollectors.class +com/google/common/collect/MutableClassToInstanceMap$1.class +com/google/common/collect/MutableClassToInstanceMap$2$1.class +com/google/common/collect/MutableClassToInstanceMap$2.class +com/google/common/collect/MutableClassToInstanceMap$SerializedForm.class +com/google/common/collect/MutableClassToInstanceMap.class +com/google/common/collect/Queues.class +com/google/common/collect/RegularImmutableSortedMultiset.class +com/google/common/collect/RegularImmutableTable$1.class +com/google/common/collect/RegularImmutableTable$CellSet.class +com/google/common/collect/RegularImmutableTable$Values.class +com/google/common/collect/RegularImmutableTable.class +com/google/common/collect/RowSortedTable.class +com/google/common/collect/SingletonImmutableTable.class +com/google/common/collect/SortedMultisets$ElementSet.class +com/google/common/collect/SortedMultisets$NavigableElementSet.class +com/google/common/collect/SortedMultisets.class +com/google/common/collect/SparseImmutableTable.class +com/google/common/collect/StandardRowSortedTable$1.class +com/google/common/collect/StandardRowSortedTable$RowSortedMap.class +com/google/common/collect/StandardRowSortedTable.class +com/google/common/collect/StandardTable$1.class +com/google/common/collect/StandardTable$CellIterator.class +com/google/common/collect/StandardTable$Column$EntrySet.class +com/google/common/collect/StandardTable$Column$EntrySetIterator$1EntryImpl.class +com/google/common/collect/StandardTable$Column$EntrySetIterator.class +com/google/common/collect/StandardTable$Column$KeySet.class +com/google/common/collect/StandardTable$Column$Values.class +com/google/common/collect/StandardTable$Column.class +com/google/common/collect/StandardTable$ColumnKeyIterator.class +com/google/common/collect/StandardTable$ColumnKeySet.class +com/google/common/collect/StandardTable$ColumnMap$ColumnMapEntrySet$1.class +com/google/common/collect/StandardTable$ColumnMap$ColumnMapEntrySet.class +com/google/common/collect/StandardTable$ColumnMap$ColumnMapValues.class +com/google/common/collect/StandardTable$ColumnMap.class +com/google/common/collect/StandardTable$Row$1.class +com/google/common/collect/StandardTable$Row$2.class +com/google/common/collect/StandardTable$Row.class +com/google/common/collect/StandardTable$RowMap$EntrySet$1.class +com/google/common/collect/StandardTable$RowMap$EntrySet.class +com/google/common/collect/StandardTable$RowMap.class +com/google/common/collect/StandardTable$TableSet.class +com/google/common/collect/StandardTable.class +com/google/common/collect/Tables$1.class +com/google/common/collect/Tables$AbstractCell.class +com/google/common/collect/Tables$ImmutableCell.class +com/google/common/collect/Tables$TransformedTable$1.class +com/google/common/collect/Tables$TransformedTable$2.class +com/google/common/collect/Tables$TransformedTable$3.class +com/google/common/collect/Tables$TransformedTable.class +com/google/common/collect/Tables$TransposeTable$1.class +com/google/common/collect/Tables$TransposeTable.class +com/google/common/collect/Tables$UnmodifiableRowSortedMap.class +com/google/common/collect/Tables$UnmodifiableTable.class +com/google/common/collect/Tables.class +com/google/common/collect/TreeBasedTable$1.class +com/google/common/collect/TreeBasedTable$2.class +com/google/common/collect/TreeBasedTable$Factory.class +com/google/common/collect/TreeBasedTable$TreeRow.class +com/google/common/collect/TreeBasedTable.class +com/google/common/collect/TreeMultimap.class +com/google/common/collect/TreeMultiset$1.class +com/google/common/collect/TreeMultiset$2.class +com/google/common/collect/TreeMultiset$3.class +com/google/common/collect/TreeMultiset$4.class +com/google/common/collect/TreeMultiset$Aggregate$1.class +com/google/common/collect/TreeMultiset$Aggregate$2.class +com/google/common/collect/TreeMultiset$Aggregate.class +com/google/common/collect/TreeMultiset$AvlNode.class +com/google/common/collect/TreeMultiset$Reference.class +com/google/common/collect/TreeMultiset.class +com/google/common/collect/TreeRangeMap$1.class +com/google/common/collect/TreeRangeMap$AsMapOfRanges.class +com/google/common/collect/TreeRangeMap$RangeMapEntry.class +com/google/common/collect/TreeRangeMap$SubRangeMap$1$1.class +com/google/common/collect/TreeRangeMap$SubRangeMap$1.class +com/google/common/collect/TreeRangeMap$SubRangeMap$SubRangeMapAsMap$1.class +com/google/common/collect/TreeRangeMap$SubRangeMap$SubRangeMapAsMap$2.class +com/google/common/collect/TreeRangeMap$SubRangeMap$SubRangeMapAsMap$3.class +com/google/common/collect/TreeRangeMap$SubRangeMap$SubRangeMapAsMap$4.class +com/google/common/collect/TreeRangeMap$SubRangeMap$SubRangeMapAsMap.class +com/google/common/collect/TreeRangeMap$SubRangeMap.class +com/google/common/collect/TreeRangeMap.class +com/google/common/collect/TreeTraverser$1.class +com/google/common/collect/TreeTraverser$2$1.class +com/google/common/collect/TreeTraverser$2.class +com/google/common/collect/TreeTraverser$3$1.class +com/google/common/collect/TreeTraverser$3.class +com/google/common/collect/TreeTraverser$4.class +com/google/common/collect/TreeTraverser$BreadthFirstIterator.class +com/google/common/collect/TreeTraverser$PostOrderIterator.class +com/google/common/collect/TreeTraverser$PostOrderNode.class +com/google/common/collect/TreeTraverser$PreOrderIterator.class +com/google/common/collect/TreeTraverser.class diff --git a/buildSrc/src/main/resources/exclusions/logback.txt b/buildSrc/src/main/resources/exclusions/logback.txt new file mode 100644 index 0000000..8578d11 --- /dev/null +++ b/buildSrc/src/main/resources/exclusions/logback.txt @@ -0,0 +1,2 @@ +ch/qos/logback/core/db/** +ch/qos/logback/classic/db/** diff --git a/buildSrc/src/main/resources/exclusions/others.txt b/buildSrc/src/main/resources/exclusions/others.txt new file mode 100644 index 0000000..3e75158 --- /dev/null +++ b/buildSrc/src/main/resources/exclusions/others.txt @@ -0,0 +1,6 @@ +arrow/core/extensions/** +org/checkerframework/** +org/intellij/** +com/google/errorprone/** +com/google/thirdparty/** +com/google/j2objc/** diff --git a/css/package.json b/css/package.json index 62b51dc..a4e7fc9 100644 --- a/css/package.json +++ b/css/package.json @@ -2,8 +2,7 @@ "name": "css", "version": "1.0.0", "scripts": { - "css": "NODE_ENV=dev MANIFEST=../simplenotes-app/src/main/resources/css-manifest.json postcss build src/styles.pcss --output ../simplenotes-app/src/main/resources/static/styles.css", - "css-purge": "NODE_ENV=production MANIFEST=../simplenotes-app/src/main/resources/css-manifest.json postcss build src/styles.pcss --output ../simplenotes-app/src/main/resources/static/styles.css" + "//": "`gradle css`" }, "dependencies": { "autoprefixer": "^9.8.6", diff --git a/deploy-docker-hub.sh b/deploy-docker-hub.sh deleted file mode 100755 index ed7be34..0000000 --- a/deploy-docker-hub.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -rm simplenotes-app/src/main/resources/css-manifest.json -rm simplenotes-app/src/main/resources/static/styles* - -yarn --cwd css run css-purge \ - && docker build -t hubv/simplenotes:latest . \ - && docker push hubv/simplenotes:latest diff --git a/pom.xml b/pom.xml deleted file mode 100644 index d4efa06..0000000 --- a/pom.xml +++ /dev/null @@ -1,250 +0,0 @@ - - - 4.0.0 - - be.simplenotes - simplenotes-parent - 1.0-SNAPSHOT - - - simplenotes-persistance - simplenotes-app - simplenotes-domain - simplenotes-search - simplenotes-types - simplenotes-config - simplenotes-test-resources - simplenotes-views - - - pom - - - 14 - 1.4.10 - 5.6.2 - - official - true - - UTF-8 - ${java.version} - ${java.version} - ${java.version} - - 1.4.1.Final - - - - - org.jetbrains.kotlin - kotlin-stdlib-jdk8 - ${kotlin.version} - - - - - ${project.basedir}/src/main/kotlin - ${project.basedir}/src/test/kotlin - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.2.0 - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.4 - - - org.apache.maven.plugins - maven-surefire-plugin - 3.0.0-M5 - - - org.apache.maven.surefire - surefire-junit-platform - 3.0.0-M5 - - - - - - - - - - org.apache.maven.plugins - maven-enforcer-plugin - 3.0.0-M3 - - - enforce - - enforce - - - - - - 3.6 - - - - - - - - - kotlin-maven-plugin - org.jetbrains.kotlin - ${kotlin.version} - - - kapt - - kapt - - - - - org.mapstruct - mapstruct-processor - ${org.mapstruct.version} - - - - - - compile - process-sources - - compile - - - - test-compile - - test-compile - - - - - - -Xno-param-assertions - -Xno-call-assertions - -Xno-receiver-assertions - - - kotlinx-serialization - - - - - org.jetbrains.kotlin - kotlin-maven-serialization - ${kotlin.version} - - - - - - - - - - org.jetbrains.kotlin - kotlin-bom - ${kotlin.version} - pom - import - - - org.jetbrains.kotlinx - kotlinx-serialization-json-jvm - 1.0.0 - - - - org.koin - koin-core - 2.1.6 - - - ch.qos.logback - logback-classic - 1.2.3 - - - io.arrow-kt - arrow-core - 0.11.0 - - - org.slf4j - slf4j-api - 1.7.25 - - - - me.liuwj.ktorm - ktorm-core - 3.0.0 - - - me.liuwj.ktorm - ktorm-support-mysql - 3.0.0 - - - - org.mapstruct - mapstruct - ${org.mapstruct.version} - - - - - org.junit.jupiter - junit-jupiter - ${junit.version} - - - io.mockk - mockk - 1.10.0 - - - com.natpryce - hamkrest - 1.7.0.3 - - - org.assertj - assertj-core - 3.16.1 - - - - - - - - jcenter - https://jcenter.bintray.com - - - arrow - https://dl.bintray.com/arrow-kt/arrow-kt/ - - - kotlinx - https://kotlin.bintray.com/kotlinx - - - - diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..3d177c9 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,8 @@ +rootProject.name = "simplenotes" +include(":simplenotes-config") +include(":simplenotes-views") +include(":simplenotes-app") +include(":simplenotes-domain") +include(":simplenotes-search") +include(":simplenotes-types") +include(":simplenotes-persistance") diff --git a/simplenotes-app/build.gradle.kts b/simplenotes-app/build.gradle.kts new file mode 100644 index 0000000..f826f12 --- /dev/null +++ b/simplenotes-app/build.gradle.kts @@ -0,0 +1,32 @@ +import be.simplenotes.Libs + +plugins { + id("be.simplenotes.base") + id("be.simplenotes.app-shadow") + id("be.simplenotes.app-css") + id("be.simplenotes.app-docker") +} + +dependencies { + implementation(project(":simplenotes-persistance")) + implementation(project(":simplenotes-search")) + implementation(project(":simplenotes-domain")) + implementation(project(":simplenotes-types")) + implementation(project(":simplenotes-config")) + implementation(project(":simplenotes-views")) + + implementation(Libs.koinCore) + implementation(Libs.arrowCore) + implementation(Libs.konform) + implementation(Libs.http4kCore) + implementation(Libs.jettyServer) + implementation(Libs.jettyServlet) + implementation(Libs.javaxServlet) + implementation(Libs.kotlinxSerializationJson) + implementation(Libs.logbackClassic) + implementation(Libs.ktormCore) + + testImplementation(Libs.junit) + testImplementation(Libs.assertJ) + testImplementation(Libs.http4kTestingHamkrest) +} diff --git a/simplenotes-app/pom.xml b/simplenotes-app/pom.xml deleted file mode 100644 index 903eb0e..0000000 --- a/simplenotes-app/pom.xml +++ /dev/null @@ -1,203 +0,0 @@ - - - - simplenotes-parent - be.simplenotes - 1.0-SNAPSHOT - - 4.0.0 - - simplenotes-app - - - 3.268.0 - - - - - be.simplenotes - simplenotes-persistance - 1.0-SNAPSHOT - - - be.simplenotes - simplenotes-search - 1.0-SNAPSHOT - - - be.simplenotes - simplenotes-domain - 1.0-SNAPSHOT - - - be.simplenotes - simplenotes-config - 1.0-SNAPSHOT - - - org.http4k - http4k-core - - - - - org.eclipse.jetty - jetty-server - 9.4.32.v20200930 - compile - - - org.eclipse.jetty - jetty-servlet - 9.4.32.v20200930 - compile - - - javax.servlet - javax.servlet-api - 4.0.1 - compile - - - - org.jetbrains.kotlinx - kotlinx-serialization-json-jvm - - - - ch.qos.logback - logback-classic - - - org.assertj - assertj-core - test - - - org.junit.jupiter - junit-jupiter - test - - - - be.simplenotes - simplenotes-test-resources - 1.0-SNAPSHOT - test-jar - test - - - org.http4k - http4k-testing-hamkrest - test - - - - me.liuwj.ktorm - ktorm-core - - - be.simplenotes - simplenotes-views - 1.0-SNAPSHOT - compile - - - - - - - org.http4k - http4k-bom - ${http4k.version} - pom - import - - - - - - - - org.apache.maven.plugins - maven-shade-plugin - - - package - - shade - - - true - - - be.simplenotes.app.SimpleNotesKt - - - - - com.h2database:h2 - - ** - - - - org.mariadb.jdbc:mariadb-java-client - - ** - - - - org.jetbrains.kotlin:kotlin-reflect - - ** - - - - org.eclipse.jetty:* - - ** - - - - org.apache.lucene:* - - ** - - - - org.ocpsoft.prettytime:prettytime - - ** - - - - *:* - - META-INF/maven/** - META-INF/proguard/** - META-INF/*.kotlin_module - META-INF/DEPENDENCIES* - META-INF/NOTICE* - META-INF/LICENSE* - LICENSE* - META-INF/README* - META-INF/native-image/** - - - - - - - - - - - diff --git a/simplenotes-config/build.gradle.kts b/simplenotes-config/build.gradle.kts new file mode 100644 index 0000000..17e2f5f --- /dev/null +++ b/simplenotes-config/build.gradle.kts @@ -0,0 +1,9 @@ +import be.simplenotes.Libs + +plugins { + id("be.simplenotes.base") +} + +dependencies { + implementation(Libs.koinCore) +} diff --git a/simplenotes-config/pom.xml b/simplenotes-config/pom.xml deleted file mode 100644 index 6f182b6..0000000 --- a/simplenotes-config/pom.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - simplenotes-parent - be.simplenotes - 1.0-SNAPSHOT - - 4.0.0 - - simplenotes-config - - - - org.koin - koin-core - - - - diff --git a/simplenotes-domain/build.gradle.kts b/simplenotes-domain/build.gradle.kts new file mode 100644 index 0000000..51f34ef --- /dev/null +++ b/simplenotes-domain/build.gradle.kts @@ -0,0 +1,29 @@ +import be.simplenotes.Libs + +plugins { + id("be.simplenotes.base") + kotlin("plugin.serialization") version "1.4.10" +} + +dependencies { + implementation(project(":simplenotes-config")) + implementation(project(":simplenotes-types")) + implementation(project(":simplenotes-persistance")) + implementation(project(":simplenotes-search")) + + implementation(Libs.kotlinxSerializationJson) + implementation(Libs.koinCore) + implementation(Libs.arrowCore) + implementation(Libs.konform) + implementation(Libs.jbcrypt) + implementation(Libs.javaJwt) + implementation(Libs.flexmark) + implementation(Libs.flexmarkGfmTasklist) + implementation(Libs.snakeyaml) + implementation(Libs.owaspHtmlSanitizer) + implementation(Libs.commonsCompress) + + testImplementation(Libs.hamkrest) + testImplementation(Libs.junit) + testImplementation(Libs.mockk) +} diff --git a/simplenotes-domain/pom.xml b/simplenotes-domain/pom.xml deleted file mode 100644 index a41855a..0000000 --- a/simplenotes-domain/pom.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - - simplenotes-parent - be.simplenotes - 1.0-SNAPSHOT - - 4.0.0 - - simplenotes-domain - - - - be.simplenotes - simplenotes-config - 1.0-SNAPSHOT - - - be.simplenotes - simplenotes-test-resources - 1.0-SNAPSHOT - test-jar - test - - - - org.koin - koin-core - - - - io.arrow-kt - arrow-core - - - - com.natpryce - hamkrest - test - - - org.junit.jupiter - junit-jupiter - test - - - io.mockk - mockk - test - - - - io.konform - konform-jvm - 0.2.0 - - - org.mindrot - jbcrypt - 0.4 - - - com.auth0 - java-jwt - 3.10.3 - - - com.vladsch.flexmark - flexmark - 0.62.2 - - - com.vladsch.flexmark - flexmark-ext-gfm-tasklist - 0.62.2 - - - org.yaml - snakeyaml - 1.26 - - - com.googlecode.owasp-java-html-sanitizer - owasp-java-html-sanitizer - 20200713.1 - - - org.apache.commons - commons-compress - 1.20 - - - be.simplenotes - simplenotes-types - 1.0-SNAPSHOT - compile - - - be.simplenotes - simplenotes-persistance - 1.0-SNAPSHOT - compile - - - be.simplenotes - simplenotes-search - 1.0-SNAPSHOT - compile - - - - diff --git a/simplenotes-persistance/build.gradle.kts b/simplenotes-persistance/build.gradle.kts new file mode 100644 index 0000000..89fe6de --- /dev/null +++ b/simplenotes-persistance/build.gradle.kts @@ -0,0 +1,25 @@ +import be.simplenotes.Libs + +plugins { + id("be.simplenotes.base") + kotlin("kapt") +} + +dependencies { + implementation(project(":simplenotes-types")) + implementation(project(":simplenotes-config")) + + implementation(Libs.mapstruct) + implementation(Libs.koinCore) + implementation(Libs.mariadbClient) + implementation(Libs.h2) + implementation(Libs.flywayCore) + implementation(Libs.hikariCP) + implementation(Libs.ktormCore) + implementation(Libs.ktormMysql) + + kapt(Libs.mapstructProcessor) + + testImplementation(Libs.junit) + testImplementation(Libs.assertJ) +} diff --git a/simplenotes-persistance/pom.xml b/simplenotes-persistance/pom.xml deleted file mode 100644 index 80a6a3c..0000000 --- a/simplenotes-persistance/pom.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - simplenotes-parent - be.simplenotes - 1.0-SNAPSHOT - - 4.0.0 - - simplenotes-persistance - - - - org.mapstruct - mapstruct - - - be.simplenotes - simplenotes-types - 1.0-SNAPSHOT - - - be.simplenotes - simplenotes-config - 1.0-SNAPSHOT - - - be.simplenotes - simplenotes-test-resources - 1.0-SNAPSHOT - test-jar - test - - - - org.koin - koin-core - - - - org.assertj - assertj-core - test - - - org.junit.jupiter - junit-jupiter - test - - - - org.mariadb.jdbc - mariadb-java-client - 2.6.2 - - - com.h2database - h2 - 1.4.200 - - - org.flywaydb - flyway-core - 6.5.4 - - - - com.zaxxer - HikariCP - 3.4.3 - - - - me.liuwj.ktorm - ktorm-core - - - me.liuwj.ktorm - ktorm-support-mysql - - - - diff --git a/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/HealthCheck.kt b/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/HealthCheck.kt index 97e3928..c061924 100644 --- a/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/HealthCheck.kt +++ b/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/HealthCheck.kt @@ -5,6 +5,7 @@ import be.simplenotes.persistance.utils.type import be.simplenotes.config.DataSourceConfig import me.liuwj.ktorm.database.Database import me.liuwj.ktorm.database.asIterable +import me.liuwj.ktorm.database.use import java.sql.SQLTransientException interface DbHealthCheck { diff --git a/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/converters/NoteConverter.kt b/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/converters/NoteConverter.kt index 8fbc6fc..9ba4d97 100644 --- a/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/converters/NoteConverter.kt +++ b/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/converters/NoteConverter.kt @@ -1,11 +1,12 @@ package be.simplenotes.persistance.converters -import be.simplenotes.types.* import be.simplenotes.persistance.notes.NoteEntity +import be.simplenotes.types.* import me.liuwj.ktorm.entity.Entity import org.mapstruct.Mapper import org.mapstruct.Mapping import org.mapstruct.Mappings +import org.mapstruct.ReportingPolicy import java.time.LocalDateTime import java.util.* @@ -14,7 +15,7 @@ import java.util.* * This is an abstract class because kotlin default methods in interface are not seen as default in kapt * @see [KT-25960](https://youtrack.jetbrains.com/issue/KT-25960) */ -@Mapper(uses = [NoteEntityFactory::class, UserEntityFactory::class]) +@Mapper(uses = [NoteEntityFactory::class, UserEntityFactory::class], unmappedTargetPolicy = ReportingPolicy.IGNORE) internal abstract class NoteConverter { fun toNote(entity: NoteEntity, tags: Tags) = diff --git a/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/converters/UserConverter.kt b/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/converters/UserConverter.kt index 4309e92..5c12dd5 100644 --- a/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/converters/UserConverter.kt +++ b/simplenotes-persistance/src/main/kotlin/be/simplenotes/persistance/converters/UserConverter.kt @@ -1,12 +1,13 @@ package be.simplenotes.persistance.converters +import be.simplenotes.persistance.users.UserEntity import be.simplenotes.types.PersistedUser import be.simplenotes.types.User -import be.simplenotes.persistance.users.UserEntity import me.liuwj.ktorm.entity.Entity import org.mapstruct.Mapper +import org.mapstruct.ReportingPolicy -@Mapper(uses = [UserEntityFactory::class]) +@Mapper(uses = [UserEntityFactory::class], unmappedTargetPolicy = ReportingPolicy.IGNORE) internal interface UserConverter { fun toUser(userEntity: UserEntity): User fun toPersistedUser(userEntity: UserEntity): PersistedUser diff --git a/simplenotes-search/build.gradle.kts b/simplenotes-search/build.gradle.kts new file mode 100644 index 0000000..c1d0953 --- /dev/null +++ b/simplenotes-search/build.gradle.kts @@ -0,0 +1,18 @@ +import be.simplenotes.Libs + +plugins { + id("be.simplenotes.base") +} + +dependencies { + implementation(project(":simplenotes-types")) + + implementation(Libs.luceneCore) + implementation(Libs.luceneQueryParser) + implementation(Libs.luceneAnalyzersCommon) + implementation(Libs.slf4jApi) + implementation(Libs.koinCore) + + testImplementation(Libs.junit) + testImplementation(Libs.assertJ) +} diff --git a/simplenotes-search/pom.xml b/simplenotes-search/pom.xml deleted file mode 100644 index 966bce0..0000000 --- a/simplenotes-search/pom.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - simplenotes-parent - be.simplenotes - 1.0-SNAPSHOT - - 4.0.0 - - simplenotes-search - - - 8.6.1 - - - - - be.simplenotes - simplenotes-types - 1.0-SNAPSHOT - - - - org.apache.lucene - lucene-core - ${lucene.version} - - - org.apache.lucene - lucene-analyzers-common - ${lucene.version} - - - org.apache.lucene - lucene-queryparser - ${lucene.version} - - - - org.slf4j - slf4j-api - - - org.koin - koin-core - - - - org.junit.jupiter - junit-jupiter - test - - - org.assertj - assertj-core - test - - - - be.simplenotes - simplenotes-test-resources - 1.0-SNAPSHOT - test-jar - test - - - - - diff --git a/simplenotes-test-resources/pom.xml b/simplenotes-test-resources/pom.xml deleted file mode 100644 index ea6766a..0000000 --- a/simplenotes-test-resources/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - simplenotes-parent - be.simplenotes - 1.0-SNAPSHOT - - 4.0.0 - - simplenotes-test-resources - - - - - org.apache.maven.plugins - maven-jar-plugin - - - - test-jar - - - - - - - diff --git a/simplenotes-types/build.gradle.kts b/simplenotes-types/build.gradle.kts new file mode 100644 index 0000000..bcccb84 --- /dev/null +++ b/simplenotes-types/build.gradle.kts @@ -0,0 +1,10 @@ +import be.simplenotes.Libs + +plugins { + id("be.simplenotes.base") + kotlin("plugin.serialization") version "1.4.10" +} + +dependencies { + implementation(Libs.kotlinxSerializationJson) +} diff --git a/simplenotes-types/pom.xml b/simplenotes-types/pom.xml deleted file mode 100644 index fba64c7..0000000 --- a/simplenotes-types/pom.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - simplenotes-parent - be.simplenotes - 1.0-SNAPSHOT - - 4.0.0 - - simplenotes-types - - - - org.jetbrains.kotlinx - kotlinx-serialization-json-jvm - - - - diff --git a/simplenotes-views/build.gradle.kts b/simplenotes-views/build.gradle.kts new file mode 100644 index 0000000..0185584 --- /dev/null +++ b/simplenotes-views/build.gradle.kts @@ -0,0 +1,14 @@ +import be.simplenotes.Libs + +plugins { + id("be.simplenotes.base") +} + +dependencies { + implementation(project(":simplenotes-types")) + + implementation(Libs.koinCore) + implementation(Libs.konform) + implementation(Libs.kotlinxHtml) + implementation(Libs.prettytime) +} diff --git a/simplenotes-views/pom.xml b/simplenotes-views/pom.xml deleted file mode 100644 index 401cd17..0000000 --- a/simplenotes-views/pom.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - simplenotes-parent - be.simplenotes - 1.0-SNAPSHOT - - 4.0.0 - - simplenotes-views - - - - org.koin - koin-core - - - io.konform - konform-jvm - 0.2.0 - - - org.jetbrains.kotlinx - kotlinx-html-jvm - 0.7.1 - - - org.ocpsoft.prettytime - prettytime - 4.0.5.Final - - - be.simplenotes - simplenotes-types - 1.0-SNAPSHOT - - - -