commit | b3c4292f209511e79c84dd76d42355baa04e16ba | [log] [tgz] |
---|---|---|
author | Sergey Mashkov <sergey.mashkov@jetbrains.com> | Fri Jul 10 15:51:59 2015 +0300 |
committer | Sergey Mashkov <sergey.mashkov@jetbrains.com> | Mon Jul 13 17:57:56 2015 +0300 |
tree | a2ad0970fb3b5aeed1005173c2ffb241eaaca0fa | |
parent | 3d25df6c3c68b43431abbed326b17c50717a18f7 [diff] |
Maven plugin getting started
Dokka is documentation engine for Kotlin, performing the same function as javadoc for Java.
NOTE: It is work in progress both on compiler side and this tool. Do not base your business on it. Yet.
Dokka uses Kotlin-as-a-service technology to build code model
, then processes it into documentation model
. Documentation model
is graph of items describing code elements such as classes, packages, functions, etc.
Each node has semantic attached, e.g. Value:name -> Type:String means that some value name
is of type String
.
Each reference between nodes also has semantic attached, and there are three of them:
Member & Detail has reverse Owner reference, while Link's back reference is also Link.
Nodes that are Details of other nodes cannot have Members.
When we have documentation model, we can render docs in various formats, languages and layouts. We have some core services:
Basically, given the documentation
as a model, we do this:
val signatureGenerator = KotlinSignatureGenerator() val locationService = FoldersLocationService(arguments.outputDir) val markdown = JekyllFormatService(locationService, signatureGenerator) val generator = FileGenerator(signatureGenerator, locationService, markdown) generator.generate(documentation)
Dokka docs are built with Dokka. Yes, we bootstrap and dogfood :)
Documentation can be generated in various mark-up formats.
Place documentation in different file structure. All links are relative regardless of structure.
Output symbol declarations in different languages.
KDoc is a flavour of markdown with symbol processing extensions.
name
(markdown style)name
(Kotlin string interpolation style), or ${java.lang.String} for longer referencesname
, e.g. param docBuild only dokka
ant fatjar
Build dokka and maven plugin
ant install-fj cd maven-plugin mvn install
Build dokka and install maven plugin (do not require maven installed)
ant build-and-install
Minimal maven configuration is
<plugin> <groupId>org.jetbrains.dokka</groupId> <artifactId>dokka-maven-plugin</artifactId> <version>${dokka.version}</version> <executions> <execution> <phase>pre-site</phase> <goals> <goal>dokka</goal> </goals> </execution> </executions> </plugin>
by default files will be generated in target/dokka
Configuring source links mapping
<plugin> <groupId>org.jetbrains.dokka</groupId> <artifactId>dokka-maven-plugin</artifactId> <version>${dokka.version}</version> <executions> <execution> <phase>pre-site</phase> <goals> <goal>dokka</goal> </goals> </execution> </executions> <configuration> <sourceLinks> <link> <dir>${project.basedir}/src/main/kotlin</dir> <url>http://github.com/me/myrepo</url> </link> </sourceLinks> </configuration> </plugin>