Is there some way to generate a jar file to be used in IDE's (like IDEA, Eclipse,...) from groovydoc that is generated from within maven? I'm currently generating groovydoc from a quite big groovy project with the maven antrun plugin described here: GroovyDoc as Maven Plugin
I was able to get a usable jar file by manually packing outputted files into an archive, but I'm looking for an integrated way (that is, with maven), that also allows me to deploy those files to a repository.
If you followed the link in your post then the groovydoc will be generated during the site
phase.
In order to assemble a jar with the generated groovydoc you can use the maven-assembly-plugin
.
I have created a src/main/assembly
directory where an assembly descriptor is being added for maven-assembly-plugin
to use.
This is a working example for generating groovydoc during site
phase and with a groovydoc
jar being packaged as well.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow.Q13343411</groupId>
<artifactId>groovy</artifactId>
<version>1.0-SNAPSHOT</version>
<name>${project.artifactId}-${project.version}</name>
<properties>
<gmavenVersion>1.4</gmavenVersion>
<gmavenProviderSelection>2.0</gmavenProviderSelection>
<groovyVersion>2.0.0</groovyVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovyVersion}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>${gmavenVersion}</version>
<configuration>
<providerSelection>${gmavenProviderSelection}</providerSelection>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<source/>
</configuration>
<executions>
<execution>
<goals>
<!-- Only used when doing java/groovy join builds
OR, add the dependency to groovy-all again here in the plugin
-->
<goal>generateStubs</goal>
<goal>compile</goal>
<!-- Only used when doing java/groovy join builds
OR, add the dependency to groovy-all again here in the plugin
-->
<goal>generateTestStubs</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovyVersion}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>groovydoc</id>
<phase>site</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<taskdef name="groovydoc"
classname="org.codehaus.groovy.ant.Groovydoc"
classpathref="maven.compile.classpath"
/>
<groovydoc destdir="${project.reporting.outputDirectory}/groovydoc"
sourcepath="${basedir}/src/main/groovy" use="true"
windowtitle="${project.name}"
doctitle="${project.name}"
>
<link packages="java.,org.xml.,javax.,org.xml."
href="http://download.oracle.com/javase/6/docs/api"/>
<link packages="org.apache.tools.ant."
href="http://evgeny-goldin.org/javadoc/ant/api"/>
<link packages="org.junit.,junit.framework."
href="http://kentbeck.github.com/junit/javadoc/latest"/>
<link packages="groovy.,org.codehaus.groovy."
href="http://groovy.codehaus.org/api/"/>
<link packages="org.codehaus.gmaven."
href="http://evgeny-goldin.org/javadoc/gmaven"/>
</groovydoc>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/groovydoc.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>groovydoc</id>
<phase>site</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
src/main/assembly/groovydoc.xml
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>groovydoc</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.reporting.outputDirectory}/groovydoc</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>
If you run
mvn site
You'll have a groovydoc jar file in the target directory.
You can change the <phase>site</phase>
to <phase>prepare-package</phase>
if you want this to be created during the Default Lifecycle. You will have to change the directories where the generated groovydoc is too in order to make it work.