diff options
| author | Fabian Mastenbroek <fabianishere@outlook.com> | 2018-07-11 23:38:40 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-07-11 23:38:40 +0200 |
| commit | 5fb2d1cb376d94540b6dff9ff769bbd56bcab153 (patch) | |
| tree | a16c87718b83c3ba12e46496a266878848f29bb8 | |
| parent | bc814ab5b5a4becf3dbc5f796a165955c0305d70 (diff) | |
| parent | 8c7e208233c86614ac29157efba24e3a57d7f21c (diff) | |
chore: Update build toolchain (#23)
This pull requests updates the project as follows:
1. **Update Gradle version to 4.8**
This allows us to make use of new features such as native JUnit 5 integration and the build cache.
2. **Update Gradle build configuration according to new changes**
This change allows us to share configuration across modules and easily change the versions for shared dependencies. In addition, we now make use of the `java-library` plugin which allows for various optimizations. See https://docs.gradle.org/current/userguide/java_library_plugin.html
3. **Add support for Jacoco**
We add support code coverage tracking via the latest version of Jacoco which has increasing support for Kotlin.
Closes #22
| -rw-r--r-- | build.gradle | 45 | ||||
| -rw-r--r-- | gradle/kotlin.gradle | 85 | ||||
| -rw-r--r-- | gradle/wrapper/gradle-wrapper.jar | bin | 54788 -> 54413 bytes | |||
| -rw-r--r-- | gradle/wrapper/gradle-wrapper.properties | 11 | ||||
| -rwxr-xr-x | gradlew | 6 | ||||
| -rw-r--r-- | opendc-core/build.gradle | 58 | ||||
| -rw-r--r-- | opendc-kernel-omega/build.gradle | 64 | ||||
| -rw-r--r-- | opendc-model-odc/core/build.gradle | 64 | ||||
| -rw-r--r-- | opendc-model-odc/jpa/build.gradle | 66 | ||||
| -rw-r--r-- | opendc-model-odc/setup/build.gradle | 53 | ||||
| -rw-r--r-- | opendc-stdlib/build.gradle | 65 |
11 files changed, 191 insertions, 326 deletions
diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..8ce1956a --- /dev/null +++ b/build.gradle @@ -0,0 +1,45 @@ +/* + * MIT License + * + * Copyright (c) 2017 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. + */ + +plugins { + id 'org.jetbrains.kotlin.jvm' version '1.2.51' apply false + id 'org.jetbrains.kotlin.plugin.jpa' version '1.2.51' apply false + id 'org.jetbrains.dokka' version '0.9.17' apply false +} + +allprojects { + group = 'com.atlarge.opendc' + version = '1.2' + + ext { + kotlinx_coroutines_version = '0.23.4' + junit_jupiter_version = '5.2.0' + junit_platform_version = '1.2.0' + jacoco_version = '0.8.2-SNAPSHOT' + } +} + +wrapper { + gradleVersion = '4.8' +} diff --git a/gradle/kotlin.gradle b/gradle/kotlin.gradle new file mode 100644 index 00000000..04f67ae8 --- /dev/null +++ b/gradle/kotlin.gradle @@ -0,0 +1,85 @@ +/* + * MIT License + * + * Copyright (c) 2017 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. + */ + +/* Default configuration for Kotlin projects */ +apply plugin: 'kotlin' +apply plugin: 'org.jetbrains.dokka' +apply plugin: 'jacoco' + +sourceCompatibility = 1.8 + +compileKotlin { + kotlinOptions { + jvmTarget = "1.8" + } +} + +compileTestKotlin { + kotlinOptions { + jvmTarget = "1.8" + } +} + +kotlin { + experimental { + coroutines "enable" + } +} + +/* Configure test setup */ +test { + useJUnitPlatform {} + + testLogging { + events 'passed', 'skipped', 'failed' + } + + reports { + html.enabled = true + } + + finalizedBy jacocoTestReport +} + +/* Coverage */ +repositories { + // This repository is needed to get the latest snapshot of Jacoco + maven { url = "https://oss.sonatype.org/content/repositories/snapshots" } +} + +jacoco { + // We use the latest snapshot of Jacoco in order to get it to ignore Kotlin-generated code + toolVersion = jacoco_version +} + +jacocoTestReport { + reports { + html.enabled = true + xml.enabled = true + } +} + +/* Documentation generation */ +dokka {} + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar Binary files differindex 24dcc970..1948b907 100644 --- a/gradle/wrapper/gradle-wrapper.jar +++ b/gradle/wrapper/gradle-wrapper.jar diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5c2e2870..d2c45a4b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Aug 29 14:12:50 CEST 2017
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-rc-2-all.zip
+distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -155,7 +155,7 @@ if $cygwin ; then fi # Escape application args -save ( ) { +save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } diff --git a/opendc-core/build.gradle b/opendc-core/build.gradle index 210b8820..e6c7076b 100644 --- a/opendc-core/build.gradle +++ b/opendc-core/build.gradle @@ -23,63 +23,19 @@ */ /* Build configuration */ -buildscript { - ext.kotlin_version = '1.2.21' - ext.dokka_version = '0.9.15' - - repositories { - mavenCentral() - jcenter() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version" - classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.3' - } -} - -apply plugin: 'java' -apply plugin: 'kotlin' -apply plugin: 'org.jetbrains.dokka' -apply plugin: 'org.junit.platform.gradle.plugin' - -compileKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -compileTestKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -kotlin { - experimental { - coroutines 'enable' - } -} - -dokka { - outputFormat = 'html' - outputDirectory = "$buildDir/javadoc" -} +apply from: '../gradle/kotlin.gradle' +apply plugin: 'java-library' /* Project configuration */ -group 'com.atlarge.opendc' -version '1.1' - repositories { jcenter() } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - compile "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.22.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib" + api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinx_coroutines_version" - testCompile "org.junit.jupiter:junit-jupiter-api:5.0.0-RC3" - testRuntime "org.junit.jupiter:junit-jupiter-engine:5.0.0-RC3" - testCompile "org.junit.platform:junit-platform-launcher:1.0.0-RC3" + testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_jupiter_version" + testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_jupiter_version" + testImplementation "org.junit.platform:junit-platform-launcher:$junit_platform_version" } diff --git a/opendc-kernel-omega/build.gradle b/opendc-kernel-omega/build.gradle index e02da931..9170e73d 100644 --- a/opendc-kernel-omega/build.gradle +++ b/opendc-kernel-omega/build.gradle @@ -23,66 +23,22 @@ */ /* Build configuration */ -buildscript { - ext.kotlin_version = '1.2.21' - ext.dokka_version = '0.9.15' - - repositories { - mavenCentral() - jcenter() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version" - classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.3' - } -} - -apply plugin: 'java' -apply plugin: 'kotlin' -apply plugin: 'org.jetbrains.dokka' -apply plugin: 'org.junit.platform.gradle.plugin' - -compileKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -compileTestKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -kotlin { - experimental { - coroutines 'enable' - } -} - -dokka { - outputFormat = 'html' - outputDirectory = "$buildDir/javadoc" -} +apply from: '../gradle/kotlin.gradle' +apply plugin: 'java-library' /* Project configuration */ -group 'com.atlarge.opendc' -version '1.1' - repositories { jcenter() } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - compile "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.22.2" - compile project(':opendc-core') - compile "io.github.microutils:kotlin-logging:1.4.6" + implementation "org.jetbrains.kotlin:kotlin-stdlib" + + api project(':opendc-core') + implementation "io.github.microutils:kotlin-logging:1.4.6" - testCompile "org.junit.jupiter:junit-jupiter-api:5.0.0-RC3" - testRuntime "org.junit.jupiter:junit-jupiter-engine:5.0.0-RC3" - testCompile "org.junit.platform:junit-platform-launcher:1.0.0-RC3" - testCompile "org.slf4j:slf4j-simple:1.7.25" + testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_jupiter_version" + testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_jupiter_version" + testImplementation "org.junit.platform:junit-platform-launcher:$junit_platform_version" + testRuntimeOnly "org.slf4j:slf4j-simple:1.7.25" } diff --git a/opendc-model-odc/core/build.gradle b/opendc-model-odc/core/build.gradle index e423da50..091dcbe4 100644 --- a/opendc-model-odc/core/build.gradle +++ b/opendc-model-odc/core/build.gradle @@ -23,67 +23,23 @@ */ /* Build configuration */ -buildscript { - ext.kotlin_version = '1.2.21' - ext.dokka_version = '0.9.15' - - repositories { - mavenCentral() - jcenter() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version" - classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.3' - } -} - -apply plugin: 'java' -apply plugin: 'kotlin' -apply plugin: 'org.jetbrains.dokka' -apply plugin: 'org.junit.platform.gradle.plugin' - -compileKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -compileTestKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -kotlin { - experimental { - coroutines 'enable' - } -} - -dokka { - outputFormat = 'html' - outputDirectory = "$buildDir/javadoc" -} +apply from: '../../gradle/kotlin.gradle' +apply plugin: 'java-library' /* Project configuration */ -group 'com.atlarge.opendc' -version '1.1' - repositories { jcenter() } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib" - compile project(':opendc-core') - compile project(':opendc-stdlib') - compile "io.github.microutils:kotlin-logging:1.4.6" + api project(':opendc-core') + api project(':opendc-stdlib') + implementation "io.github.microutils:kotlin-logging:1.4.6" - testCompile "org.junit.jupiter:junit-jupiter-api:5.0.0-RC3" - testRuntime "org.junit.jupiter:junit-jupiter-engine:5.0.0-RC3" - testCompile "org.junit.platform:junit-platform-launcher:1.0.0-RC3" - testCompile "org.slf4j:slf4j-simple:1.7.25" + testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_jupiter_version" + testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_jupiter_version" + testImplementation "org.junit.platform:junit-platform-launcher:$junit_platform_version" + testRuntimeOnly "org.slf4j:slf4j-simple:1.7.25" } diff --git a/opendc-model-odc/jpa/build.gradle b/opendc-model-odc/jpa/build.gradle index 191ca787..33b50d39 100644 --- a/opendc-model-odc/jpa/build.gradle +++ b/opendc-model-odc/jpa/build.gradle @@ -23,69 +23,25 @@ */ /* Build configuration */ -buildscript { - ext.kotlin_version = '1.2.21' - ext.dokka_version = '0.9.15' - - repositories { - mavenCentral() - jcenter() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version" - classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version" - classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-RC3' - } -} - -apply plugin: 'java' -apply plugin: 'kotlin' +apply from: '../../gradle/kotlin.gradle' +apply plugin: 'java-library' apply plugin: 'kotlin-jpa' -apply plugin: 'org.jetbrains.dokka' -apply plugin: 'org.junit.platform.gradle.plugin' - -compileKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -compileTestKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -kotlin { - experimental { - coroutines 'enable' - } -} - -dokka { - outputFormat = 'html' - outputDirectory = "$buildDir/javadoc" -} /* Project configuration */ -group 'com.atlarge.opendc' -version '1.1' - repositories { jcenter() } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib" - compile project(':opendc-core') - compile project(':opendc-stdlib') - compile project(':opendc-model-odc:core') - compile 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final' + api project(':opendc-core') + api project(':opendc-stdlib') + api project(':opendc-model-odc:core') + api "javax.persistence:javax.persistence-api:2.2" + implementation "io.github.microutils:kotlin-logging:1.4.6" - testCompile 'org.junit.jupiter:junit-jupiter-api:5.0.0-RC3' - testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.0.0-RC3' - testCompile 'org.junit.platform:junit-platform-launcher:1.0.0-RC3' + testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_jupiter_version" + testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_jupiter_version" + testImplementation "org.junit.platform:junit-platform-launcher:$junit_platform_version" } diff --git a/opendc-model-odc/setup/build.gradle b/opendc-model-odc/setup/build.gradle index 1cca2a6e..c3976986 100644 --- a/opendc-model-odc/setup/build.gradle +++ b/opendc-model-odc/setup/build.gradle @@ -23,56 +23,12 @@ */ /* Build configuration */ -buildscript { - ext.kotlin_version = '1.2.21' - ext.dokka_version = '0.9.15' - - repositories { - mavenCentral() - jcenter() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version" - classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version" - } -} - -apply plugin: 'java' +apply from: '../../gradle/kotlin.gradle' apply plugin: 'application' -apply plugin: 'kotlin' -apply plugin: 'org.jetbrains.dokka' mainClassName = "com.atlarge.opendc.model.odc.platform.JpaPlatformRunnerKt" -compileKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -compileTestKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -kotlin { - experimental { - coroutines 'enable' - } -} - -dokka { - outputFormat = 'html' - outputDirectory = "$buildDir/javadoc" -} - /* Project configuration */ -group 'com.atlarge.opendc' -version '1.1' - repositories { jcenter() } @@ -80,8 +36,9 @@ repositories { dependencies { compile project(':opendc-model-odc:jpa') compile project(':opendc-kernel-omega') + compile "io.github.microutils:kotlin-logging:1.4.6" - runtime 'org.slf4j:slf4j-simple:1.7.25' - runtime 'org.hibernate:hibernate-core:5.2.5.Final' - runtime 'mysql:mysql-connector-java:5.1.13' + runtimeOnly "org.slf4j:slf4j-simple:1.7.25" + runtimeOnly "org.hibernate:hibernate-core:5.2.5.Final" + runtimeOnly "mysql:mysql-connector-java:5.1.13" } diff --git a/opendc-stdlib/build.gradle b/opendc-stdlib/build.gradle index e02da931..e1ed74ec 100644 --- a/opendc-stdlib/build.gradle +++ b/opendc-stdlib/build.gradle @@ -23,66 +23,21 @@ */ /* Build configuration */ -buildscript { - ext.kotlin_version = '1.2.21' - ext.dokka_version = '0.9.15' - - repositories { - mavenCentral() - jcenter() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version" - classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.3' - } -} - -apply plugin: 'java' -apply plugin: 'kotlin' -apply plugin: 'org.jetbrains.dokka' -apply plugin: 'org.junit.platform.gradle.plugin' - -compileKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -compileTestKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -kotlin { - experimental { - coroutines 'enable' - } -} - -dokka { - outputFormat = 'html' - outputDirectory = "$buildDir/javadoc" -} +apply plugin: 'java-library' +apply from: '../gradle/kotlin.gradle' /* Project configuration */ -group 'com.atlarge.opendc' -version '1.1' - repositories { jcenter() } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - compile "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.22.2" - compile project(':opendc-core') - compile "io.github.microutils:kotlin-logging:1.4.6" - - testCompile "org.junit.jupiter:junit-jupiter-api:5.0.0-RC3" - testRuntime "org.junit.jupiter:junit-jupiter-engine:5.0.0-RC3" - testCompile "org.junit.platform:junit-platform-launcher:1.0.0-RC3" - testCompile "org.slf4j:slf4j-simple:1.7.25" + implementation "org.jetbrains.kotlin:kotlin-stdlib" + api project(':opendc-core') + implementation "io.github.microutils:kotlin-logging:1.4.6" + + testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_jupiter_version" + testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_jupiter_version" + testImplementation "org.junit.platform:junit-platform-launcher:$junit_platform_version" + testRuntimeOnly "org.slf4j:slf4j-simple:1.7.25" } |
