Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pass Maven variable to asciidoctor-maven-plugin?

I have user-guide which uses AsciiDoc it is very beautiful despite that I did not spend much time for it.

AsciiDoc plugins are awesome. So I want to pass my Maven final name in the user guide.

Question: How to do that?

<finalName>${project.artifactId}-${project.version}-${version.state}-r${buildNumber}</finalName>

My asciidoctor-maven-plugin configurations are:

<plugin>
    <groupId>org.asciidoctor</groupId>
    <artifactId>asciidoctor-maven-plugin</artifactId>
    <version>${asciidoctor.maven.plugin.version}</version>
    <dependencies>
        <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctorj-pdf</artifactId>
            <version>${asciidoctorj.pdf.version}</version>
        </dependency>
        <!-- Comment this section to use the default jruby artifact provided by the plugin -->
        <dependency>
            <groupId>org.jruby</groupId>
            <artifactId>jruby-complete</artifactId>
            <version>${jruby.version}</version>
        </dependency>
        <!-- Comment this section to use the default AsciidoctorJ artifact provided by the plugin -->
        <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctorj</artifactId>
            <version>${asciidoctorj.version}</version>
        </dependency>
    </dependencies>
    <configuration>
        <sourceDirectory>src/docs/asciidoc</sourceDirectory>
        <sourceDocumentName>manual.adoc</sourceDocumentName>
        <!-- Attributes common to all output formats -->
        <attributes>
            <sourcedir>${project.build.sourceDirectory}</sourcedir>
        </attributes>
    </configuration>
    <executions>
        <execution>
            <id>generate-pdf-doc</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>process-asciidoc</goal>
            </goals>
            <configuration>
                <backend>pdf</backend>
                <!-- Since 1.5.0-alpha.9 PDF back-end can use 'rouge' as well as 'coderay'
            source highlighting -->
                <sourceHighlighter>rouge</sourceHighlighter>
                <attributes>
                    <icons>font</icons>
                    <pagenums/>
                    <toc/>
                    <idprefix/>
                    <idseparator>-</idseparator>
                </attributes>
            </configuration>
        </execution>
    </executions>
</plugin>
like image 412
Xelian Avatar asked Jun 16 '16 09:06

Xelian


1 Answers

The official user guide cover this case in its Passing POM properties section:

It is possible to pass properties defined in the POM to the Asciidoctor processor. This is handy for example to include in the generated document the POM artifact version number.

This is done by creating a custom AsciiDoc property in the attributes section of the configuration. The AsciiDoc property value is defined in the usual Maven way: ${myMavenProperty}.

<attributes>  
     <project-version>${project.version}</project-version>  
</attributes>

The custom AsciiDoc property can then be used in the document like this:

The latest version of the project is {project-version}.

Accordingly, you can hence apply the following to your existing configuration:

<configuration>
    <sourceDirectory>src/docs/asciidoc</sourceDirectory>
    <sourceDocumentName>manual.adoc</sourceDocumentName>
    <!-- Attributes common to all output formats -->
    <attributes>
        <sourcedir>${project.build.sourceDirectory}</sourcedir>
        <!-- the new property -->
        <final-name>${project.build.finalName}</final-name>
    </attributes>
</configuration>
like image 140
A_Di-Matteo Avatar answered Oct 27 '22 03:10

A_Di-Matteo