build.gradle
plugins {
id "java"
id "groovy"
id "idea"
id "org.danilopianini.git-sensitive-semantic-versioning-gradle-plugin" version "3.1.7"
id "io.freefair.lombok" version "8.10.2"
id "jacoco"
id "maven-publish"
id "signing"
id "io.github.gradle-nexus.publish-plugin" version "2.0.0"
id "com.diffplug.spotless" version "6.25.0"
}
group "com.autonomouslogic.dynamomapper"
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
repositories {
mavenCentral()
}
dependencies {
implementation "software.amazon.awssdk:dynamodb:2.29.6"
implementation "com.fasterxml.jackson.core:jackson-databind:2.18.1"
testImplementation "org.junit.jupiter:junit-jupiter-api:5.11.3"
testImplementation "org.junit.jupiter:junit-jupiter-params:5.11.3"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.11.3"
testImplementation "org.mockito:mockito-core:5.14.2"
testImplementation "commons-codec:commons-codec:1.17.1"
testImplementation "software.amazon.awssdk:sts:2.29.6"
testImplementation "com.amazonaws:aws-java-sdk-sts:1.12.777"
testImplementation "software.amazon.awssdk:dynamodb-enhanced:2.29.6"
testImplementation "com.amazonaws:aws-java-sdk-dynamodb:1.12.777"
testImplementation "org.apache.commons:commons-math3:3.6.1"
testImplementation "com.autonomouslogic.jacksonobjectstream:jackson-object-stream:0.2.22"
testImplementation "org.apache.commons:commons-lang3:3.17.0"
}
task codegen(type: com.autonomouslogic.dynamomapper.codegen.Codegen) {
group "build"
}
sourceSets {
integrationTest {
java.srcDir "src/integrationTest/java"
resources.srcDir "src/integrationTest/resources"
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
}
}
configurations {
integrationTestImplementation.extendsFrom testImplementation
integrationTestRuntimeOnly.extendsFrom testRuntimeOnly
}
processIntegrationTestResources {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
test {
useJUnitPlatform()
testLogging {
events = [ "FAILED", "PASSED", "SKIPPED" ]
showExceptions = true
exceptionFormat = "FULL"
showExceptions = true
showCauses = true
showStackTraces = true
}
dependsOn codegen
}
task integrationTest(type: Test, description: "Runs the integration tests", group: "verification") {
testClassesDirs = sourceSets.integrationTest.output.classesDirs
classpath = sourceSets.integrationTest.runtimeClasspath
useJUnitPlatform()
testLogging {
events = [ "FAILED", "PASSED", "SKIPPED" ]
showExceptions = true
exceptionFormat = "FULL"
showExceptions = true
showCauses = true
showStackTraces = true
}
dependsOn codegen
}
jacocoTestReport {
executionData(test, integrationTest)
reports {
xml.required = true
html.required = true
}
}
java {
withJavadocJar()
withSourcesJar()
}
publishing {
publications {
mavenJava(MavenPublication) {
pom {
name = "Dynamo Mapper"
description = "An object mapper for AWS DynamoDB using Jackson."
url = "https://github.com/autonomouslogic/dynamo-mapper"
licenses {
license {
name = "MIT-0"
url = "https://spdx.org/licenses/MIT-0.html"
}
}
developers {
developer {
id = "kennethjor"
name = "Kenneth Jørgensen"
email = "kenneth@autonomouslogic.com"
}
}
scm {
connection = "scm:git:git://github.com:autonomouslogic/dynamo-mapper.git"
developerConnection = "scm:git:ssh://github.com:autonomouslogic/sedynamo-mapper.git"
url = "https://github.com/autonomouslogic/dynamo-mapper"
}
}
from(components.java)
}
}
}
signing {
sign publishing.publications.mavenJava
}
nexusPublishing {
repositories {
sonatype()
}
}
spotless {
java {
target "src/**/*.java", "buildSrc/**/*.java"
palantirJavaFormat()
indentWithTabs()
}
groovyGradle {
indentWithTabs()
}
}