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


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

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
            }
        }
    }
}

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

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


    implementation project(':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'

    testImplementation 'org.springframework:spring-test'
    testImplementation 'org.springframework.boot:spring-boot-test'
    testImplementation 'junit:junit:4.12'
    testImplementation project(':common')

}