From 549ef194efc7a3eee948eac2da4ac36c2e47a6a1 Mon Sep 17 00:00:00 2001 From: Sergey Mashkov Date: Fri, 10 Jul 2015 15:10:36 +0300 Subject: Maven plugin initial implementation --- maven-plugin/maven-plugin.iml | 46 +++++++ maven-plugin/pom.xml | 149 +++++++++++++++++++++++ maven-plugin/src/main/kotlin/DokkaMojo.kt | 71 +++++++++++ maven-plugin/src/main/kotlin/MavenDokkaLogger.kt | 18 +++ 4 files changed, 284 insertions(+) create mode 100644 maven-plugin/maven-plugin.iml create mode 100644 maven-plugin/pom.xml create mode 100644 maven-plugin/src/main/kotlin/DokkaMojo.kt create mode 100644 maven-plugin/src/main/kotlin/MavenDokkaLogger.kt (limited to 'maven-plugin') diff --git a/maven-plugin/maven-plugin.iml b/maven-plugin/maven-plugin.iml new file mode 100644 index 00000000..b965c125 --- /dev/null +++ b/maven-plugin/maven-plugin.iml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml new file mode 100644 index 00000000..de7a5595 --- /dev/null +++ b/maven-plugin/pom.xml @@ -0,0 +1,149 @@ + + + 4.0.0 + + org.jetbrains.dokka + dokka-maven-plugin + 0.0.1-SNAPSHOT + maven-plugin + + + 1.4.1 + 3.0.5 + 3.0.22 + 0.1-SNAPSHOT + + + + + org.apache.maven + maven-core + ${maven.version} + + + org.apache.maven + maven-model + ${maven.version} + + + org.apache.maven + maven-plugin-api + ${maven.version} + + + org.codehaus.plexus + plexus-utils + ${plexus.version} + + + org.apache.maven.plugin-tools + maven-plugin-annotations + 3.4 + + + + org.jetbrains.dokka + dokka-fatjar + 1.0 + jar + compile + + + + + + my-local-repo + file://${basedir}/../out/repo + + + + + src/main/kotlin + + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + org.apache.maven.plugins + maven-plugin-plugin + 3.4 + + + + default-descriptor + + descriptor + + process-classes + + + help-descriptor + + helpmojo + + process-classes + + + + + dokka + + + + + + maven-jar-plugin + 2.6 + + + default-jar + none + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.5.5 + + + jar-with-dependencies + + false + + + + make-assembly + package + + single + + + + + + + + \ No newline at end of file diff --git a/maven-plugin/src/main/kotlin/DokkaMojo.kt b/maven-plugin/src/main/kotlin/DokkaMojo.kt new file mode 100644 index 00000000..80f00c42 --- /dev/null +++ b/maven-plugin/src/main/kotlin/DokkaMojo.kt @@ -0,0 +1,71 @@ +package org.jetbrains.dokka.maven + +import org.apache.maven.plugin.AbstractMojo +import org.apache.maven.plugins.annotations.LifecyclePhase +import org.apache.maven.plugins.annotations.Mojo +import org.apache.maven.plugins.annotations.Parameter +import org.apache.maven.plugins.annotations.ResolutionScope +import org.jetbrains.dokka.DokkaGenerator +import org.jetbrains.dokka.SourceLinkDefinition + +public class SourceLinkMapItem { + Parameter(name = "dir", required = true) + var dir: String = "" + + Parameter(name = "url", required = true) + var url: String = "" + + Parameter(name = "urlSuffix") + var urlSuffix: String? = null +} + +Mojo(name = "dokka", defaultPhase = LifecyclePhase.PRE_SITE, threadSafe = true, requiresDependencyResolution = ResolutionScope.COMPILE, requiresProject = true) +public class DokkaMojo : AbstractMojo() { + Parameter(required = true, defaultValue = "\${project.compileSourceRoots}") + var sourceDirectories: List = emptyList() + + Parameter + var samplesDirs: List = emptyList() + + Parameter + var includeDirs: List = emptyList() + + Parameter(required = true, defaultValue = "\${project.compileClasspathElements}") + var classpath: List = emptyList() + + Parameter(required = true, defaultValue = "\${project.basedir}/target/dokka") + var outputDir: String = "" + + Parameter(required = true, defaultValue = "html") + var outputFormat: String = "html" + + Parameter + var sourceLinks: Array = emptyArray() + + Parameter(required = true, defaultValue = "\${project.artifactId}") + var moduleName: String = "" + + Parameter(required = false, defaultValue = "false") + var skip: Boolean = false + + override fun execute() { + if (skip) { + getLog().info("Dokka skip parameter is true so no dokka output will be produced") + return + } + + val gen = DokkaGenerator( + MavenDokkaLogger(getLog()), + classpath, + sourceDirectories, + samplesDirs, + includeDirs, + moduleName, + outputDir, + outputFormat, + sourceLinks.map { SourceLinkDefinition(it.dir, it.url, it.urlSuffix) } + ) + + gen.generate() + } +} diff --git a/maven-plugin/src/main/kotlin/MavenDokkaLogger.kt b/maven-plugin/src/main/kotlin/MavenDokkaLogger.kt new file mode 100644 index 00000000..ebae823b --- /dev/null +++ b/maven-plugin/src/main/kotlin/MavenDokkaLogger.kt @@ -0,0 +1,18 @@ +package org.jetbrains.dokka.maven + +import org.apache.maven.plugin.logging.Log +import org.jetbrains.dokka.DokkaLogger + +public class MavenDokkaLogger(val log: Log) : DokkaLogger { + override fun error(message: String) { + log.error(message) + } + + override fun info(message: String) { + log.info(message) + } + + override fun warn(message: String) { + log.warn(message) + } +} \ No newline at end of file -- cgit