plugins {
    id 'java'
    id 'maven-publish'
    id "com.palantir.git-version"
    id "org.springframework.boot"
}

group = rootProject.group

def sdkVersion = '1.3.5'
sourceCompatibility = 1.8
targetCompatibility = 1.8

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId = project.group
            artifactId = 'dlsmk-qrcode'
            version = sdkVersion
            from components.java
        }
    }
    repositories {
        maven {
            // change URLs to point to your repos, e.g. http://my.org/repo
            def releasesRepoUrl = "http://ykt-nx.supwisdom.com/repository/ecard-repo/"
            def snapshotsRepoUrl = "http://ykt-nx.supwisdom.com/repository/ecard-repo/snapshot/"
            url = version.endsWith('dirty') ? snapshotsRepoUrl : releasesRepoUrl
            credentials(PasswordCredentials) {
                username = nxUser
                password = nxPassword
            }
        }
    }
}

dependencies {
    implementation "org.apache.commons:commons-lang3:3.7"
    implementation 'com.eatthepath:java-otp:0.2.0'
    implementation 'org.slf4j:slf4j-api:1.7.26'
    implementation 'commons-codec:commons-codec:1.9'
    implementation 'org.bouncycastle:bcprov-jdk15to18:1.66'
    implementation 'org.bouncycastle:bcpkix-jdk15on:1.66'
    runtime 'org.slf4j:slf4j-parent:1.7.26'
    testImplementation 'junit:junit:4.12'
}

jar {
    enabled = true
    baseName = "dlsmk-qrcode"
    manifest {
        attributes('dlsmk-qrcode-version': sdkVersion)
    }
}

publish.dependsOn(jar)

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}
