import groovy.xml.QName
import org.jetbrains.CrossPlatformExec
apply plugin: 'kotlin'
apply plugin: 'com.github.johnrengelman.shadow'
tasks.withType(AbstractCompile) {
classpath += configurations.shadow
}
dependencies {
shadow project(":runners:fatjar")
shadow "org.apache.maven:maven-core:$maven_version"
shadow "org.apache.maven:maven-model:$maven_version"
shadow "org.apache.maven:maven-plugin-api:$maven_version"
shadow "org.apache.maven:maven-archiver:$maven_archiver_version"
shadow "org.codehaus.plexus:plexus-utils:$plexus_utils_version"
shadow "org.codehaus.plexus:plexus-archiver:$plexus_archiver_version"
shadow "org.apache.maven.plugin-tools:maven-plugin-annotations:$maven_plugin_tools_version"
}
task ("generatePom") doLast {
final pomTemplate = new File(projectDir, "pom.tpl.xml")
final pom = new File(buildDir, "pom.xml")
pom.text = pomTemplate.text.replace("dokka_version", "$dokka_version")
.replace("", "$maven_version")
.replace("maven-plugin-plugin", "$maven_plugin_tools_version")
}
task pluginDescriptor(type: CrossPlatformExec) {
workingDir buildDir
commandLine mvn, '-e', '-B', 'org.apache.maven.plugins:maven-plugin-plugin:descriptor'
}
task helpMojo(type: CrossPlatformExec) {
workingDir buildDir
commandLine mvn, '-e', '-B', 'org.apache.maven.plugins:maven-plugin-plugin:helpmojo'
}
helpMojo.dependsOn generatePom
sourceSets.main.java.srcDir("$buildDir/generated-sources/plugin")
compileJava.dependsOn helpMojo
pluginDescriptor.dependsOn generatePom
shadowJar {
baseName = 'dokka-maven-plugin'
classifier = ''
}
shadowJar.dependsOn pluginDescriptor
task sourceJar(type: Jar) {
from sourceSets.main.allSource
}
apply plugin: 'maven-publish'
publishing {
publications {
dokkaMavenPlugin(MavenPublication) { publication ->
artifactId = 'dokka-maven-plugin'
artifact sourceJar {
classifier "sources"
}
pom.withXml {
Node root = asNode()
def dependency = new XmlParser().parseText('''
com.sun
tools
1.8.0
system
${toolsjar}
''')
root.children().find {
return ((QName) it.name()).qualifiedName == "dependencies"
}.append(dependency)
def profiles = new XmlParser().parseText('''
default-profile
true
${java.home}/../lib/tools.jar
${java.home}/../lib/tools.jar
mac-profile
false
${java.home}/../Classes/classes.jar
${java.home}/../Classes/classes.jar
''')
root.append(profiles)
}
project.shadow.component(publication)
}
}
}
tasks.withType(GenerateMavenPom) { Task generatePom ->
generatePom.doLast {
}
}
bintrayPublication(project, ['dokkaMavenPlugin'])