diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-04-22 16:03:33 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-22 16:03:33 +0200 |
| commit | f2706efb0cb1b3df9f4f5722591dd4b73188cc5c (patch) | |
| tree | 302913ed479cfb05a9581d4b6eed356aec1fd718 /buildSrc/src | |
| parent | 578394adfb5f1f835b7d8e24f68094968706dfaa (diff) | |
| parent | f5d631b474567c87bcd41f8567ba66fda2a83050 (diff) | |
merge: Update build process (#74)
This pull request brings several updates to the build process as well as new dependency versions. This should resolve several issues that occur during the build process (such as Quarkus or JaCoCo complaining).
## Implementation Notes :hammer_and_pick:
* Remove use of lint-staged
* Migrate from Yarn to NPM
* Update to Kotlin 1.6.21
* Update to Quarkus 2.8.1.Final
* Use JaCoCo 0.8.8
* Test Java 18
## External Dependencies :four_leaf_clover:
* Kotlin, Quarkus, JaCoCo, NPM
## Breaking API Changes :warning:
* N/A
Diffstat (limited to 'buildSrc/src')
| -rw-r--r-- | buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts | 5 | ||||
| -rw-r--r-- | buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts | 4 | ||||
| -rw-r--r-- | buildSrc/src/main/kotlin/quarkus-conventions.gradle.kts | 88 |
3 files changed, 97 insertions, 0 deletions
diff --git a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts index 7ae42cd2..94b20808 100644 --- a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts @@ -1,3 +1,5 @@ +import io.quarkus.gradle.QuarkusPlugin + /* * Copyright (c) 2021 AtLarge Research * @@ -37,6 +39,9 @@ dependencies { jacocoAggregation(this@subprojects) } + plugins.withType<QuarkusPlugin>().configureEach { + jacocoAggregation(this@subprojects) + } } } diff --git a/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts b/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts index 6fb9ccc3..57ad1b9d 100644 --- a/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts @@ -25,6 +25,10 @@ plugins { jacoco } +jacoco { + toolVersion = "0.8.8" +} + tasks.jacocoTestReport { reports { html.required.set(true) diff --git a/buildSrc/src/main/kotlin/quarkus-conventions.gradle.kts b/buildSrc/src/main/kotlin/quarkus-conventions.gradle.kts new file mode 100644 index 00000000..a0447362 --- /dev/null +++ b/buildSrc/src/main/kotlin/quarkus-conventions.gradle.kts @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2022 AtLarge Research + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +import org.gradle.api.artifacts.type.ArtifactTypeDefinition +import org.gradle.api.attributes.Category +import org.gradle.api.attributes.VerificationType +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.get +import org.gradle.kotlin.dsl.kotlin +import org.gradle.kotlin.dsl.withType + +plugins { + id("kotlin-conventions") + kotlin("plugin.allopen") + kotlin("plugin.jpa") + id("testing-conventions") + id("io.quarkus") +} + +/* Mark necessary classes as open in Kotlin */ +allOpen { + annotation("javax.ws.rs.Path") + annotation("javax.enterprise.context.ApplicationScoped") + annotation("io.quarkus.test.junit.QuarkusTest") + annotation("javax.persistence.Entity") +} + +/* Include metadata for method parameters */ +tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { + kotlinOptions.javaParameters = true +} + +/* Launch Quarkus dev mode from project root directory */ +tasks.quarkusDev { + workingDir = rootProject.projectDir.toString() +} + +/* Make sure the jacoco-report-aggregation plugin picks up the Quarkus coverage data */ +configurations.create("coverageDataElementsForQuarkus") { + isVisible = false + isCanBeResolved = false + isCanBeConsumed = true + + extendsFrom(configurations["implementation"], configurations["runtimeOnly"]) + + @Suppress("UnstableApiUsage") + attributes { + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category::class.java, Category.VERIFICATION)) + attribute(VerificationType.VERIFICATION_TYPE_ATTRIBUTE, objects.named(VerificationType::class.java, VerificationType.JACOCO_RESULTS)) + } + + artifacts { + add("coverageDataElementsForQuarkus", layout.buildDirectory.file("jacoco-quarkus.exec")) { + @Suppress("UnstableApiUsage") + type = ArtifactTypeDefinition.BINARY_DATA_TYPE + builtBy(tasks.test) + } + } +} + +/* Fix for Quarkus/ktlint-gradle incompatibilities */ +tasks.named("runKtlintCheckOverMainSourceSet") { + mustRunAfter(tasks.quarkusGenerateCode) + mustRunAfter(tasks.quarkusGenerateCodeDev) +} + +tasks.named("runKtlintCheckOverTestSourceSet") { + mustRunAfter(tasks.quarkusGenerateCodeTests) +} |
