apply plugin: 'java-library'
apply plugin: 'jacoco'
apply plugin: 'maven-publish'
apply plugin: 'signing'

group = 'org.dom4j'
archivesBaseName = 'dom4j'

sourceCompatibility = 1.8

tasks.withType(JavaCompile) + tasks.withType(Javadoc) {
    options.encoding = 'UTF-8'
    options.charSet = options.encoding
}

repositories {
    mavenCentral()
}

dependencies {

    implementation(
            'jaxen:jaxen:1.1.6',
            'javax.xml.stream:stax-api:1.0-2',
            'net.java.dev.msv:xsdlib:2013.6.1',
            'javax.xml.bind:jaxb-api:2.2.12',
            'pull-parser:pull-parser:2',
            'xpp3:xpp3:1.1.4c',
    )

    testImplementation(
            'org.testng:testng:6.8.21',

            'xerces:xercesImpl:2.11.0',
            'xalan:xalan:2.7.2',
    )
}

sourceSets {
    test {
        compileClasspath += configurations.compileOnly
        runtimeClasspath += configurations.compileOnly
    }
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

            artifact sourcesJar {
                classifier "sources"
            }

            artifact javadocJar {
                classifier "javadoc"
            }

            pom {
                name = 'dom4j'
                description = 'flexible XML framework for Java'
                url = 'http://dom4j.github.io/'
                licenses {
                    license {
                        name = 'BSD 3-clause New License'
                        url = 'https://github.com/dom4j/dom4j/blob/master/LICENSE'
                    }
                }
                developers {
                    developer {
                        name = 'Filip Jirsák'
                        email = 'filip@jirsak.org'
                        url = 'https://github.com/FilipJirsak'
                    }
                }
                scm {
                    connection = 'scm:git:git@github.com:dom4j/dom4j.git'
                    developerConnection = 'scm:git:git@github.com:dom4j/dom4j.git'
                    url = 'git@github.com:dom4j/dom4j.git'
                }

                withXml {
                    asNode().dependencies.dependency.findAll { xmlDep ->
                        xmlDep.appendNode('optional').value = 'true'
                    }
                }
            }
        }
    }
}

test {
    useTestNG()
}

jacocoTestReport {
    reports {
        xml.enabled true
    }
}

check.dependsOn 'jacocoTestReport'

if (project.hasProperty('ossrhUsername') && project.hasProperty('ossrhPassword')) {
    publishing {
        repositories {
            maven {
                url 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
                credentials {
                    username = ossrhUsername
                    password = ossrhPassword
                }
            }

//		mavenSnapshot{
//		url "https://oss.sonatype.org/content/repositories/snapshots/"
//			authentication(userName: ossrhUsername, password: ossrhPassword)
//		}
        }
    }
}

if (project.hasProperty('signing.keyId')) {
    signing {
        sign configurations.archives
    }
}