plugins {
    id 'java-library'
    id 'maven-publish'
    id 'org.springframework.boot' version '2.1.6.RELEASE'
    id "com.palantir.git-version" version "0.12.0-rc2"
}


apply plugin: 'io.spring.dependency-management'

group = rootProject.group

def sdkVersion = gitVersion()

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId = project.group
            artifactId = 'payapi-sdk'
            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
            }
        }
    }
}

bootJar {
    enabled = false
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'

    implementation project(':payapi-common')

    implementation 'org.springframework.cloud:spring-cloud-dependencies:Finchley.SR3'
    implementation 'org.springframework.cloud:spring-cloud-starter-openfeign:2.1.2.RELEASE'

    implementation 'javax.servlet:javax.servlet-api:4.0.1'
    compileOnly 'org.projectlombok:lombok:1.18.8'
    annotationProcessor 'org.projectlombok:lombok:1.18.8'
    compile 'com.github.mwiede:feign-validation:1.0'

    testImplementation 'org.springframework:spring-test'
    testImplementation 'org.springframework.boot:spring-boot-test'
    testImplementation 'junit:junit:4.12'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.8'
    testCompileOnly 'org.projectlombok:lombok:1.18.8'
    testImplementation 'org.hamcrest:hamcrest:2.1'
    testImplementation project(':payapi-common')

}

jar {
    enabled = true
    baseName = "payapi-sdk"
    manifest {
        attributes('Payapi-SDK-Version': sdkVersion)
    }
}

publish.dependsOn(jar)