Search code examples
mavenbuildnumber-maven-pluginmaven-pdf-plugin

how to Include the buildnumber in maven pdf:pdf


I am trying to include the build number in the pdf's that get generated with the maven pdf plugin. I have all the documentation of the project I am working on written as a maven site. This way all the documentation is stored with the source code.

Pom.xml

So in the pom.xml I have defined the buildnumber plugin:

<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>buildnumber-maven-plugin</artifactId>
   <version>1.2</version>
   <executions>
     <execution>
       <phase>generate-resources</phase>
       <goals>
         <goal>create</goal>
       </goals>
     </execution>
   </executions>
   <configuration>
     <doCheck>false</doCheck>
     <doUpdate>false</doUpdate>
     <format>{0,date,yyyy-MM-dd_HH-mm}_{1}</format>
     <items>
       <item>timestamp</item>
   <item>${user.name}</item>
     </items>
   </configuration>
 </plugin>

pdf.xml

And in the pdf.xml

<cover>
  <coverTitle>${project.name}</coverTitle>
  <coverSubTitle>v. ${project.version}</coverSubTitle>
  <coverType>Technical documentation</coverType>
  <coverVersion>build: ${project.buildNumber}</coverVersion>
  <projectName>${project.name}</projectName>
  <projectLogo>images/telfortlogo.jpg</projectLogo>
 </cover>

I even put resource filtering to ${basedir}/site but it has no effect. I keep getting the ${buildNumber} instead of the result of the buildnumber plugin.


Solution

  • To get something similar working my buildnumber plugin configuration looked like this:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
            <execution>
                <phase>pre-site</phase>
                <goals>
                    <goal>create</goal>
                </goals>
                <configuration>
                    <doCheck>false</doCheck>
                    <doUpdate>false</doUpdate>
                    <format>{0,date,yyyy-MM-dd_HH-mm}_{1}</format>
                    <items>
                        <item>timestamp</item>
                        <item>${user.name}</item>
                    </items>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    And in the pdf.xml:

    <cover>
        <coverTitle>${project.name}</coverTitle>
        <coverSubTitle>v. ${project.version} build ${buildNumber}</coverSubTitle>
        <coverType>User Guide</coverType>
        <projectName>${project.name}</projectName>
    </cover>
    

    I believe that your issue comes from the fact that you are executing the buildnumber create goal during the generate-resources phase. And if you are using mvn pdf:pdf or mvn site, the generate-resources will not get executed. I my setup I have configured the pdf plugin to run on the site phase:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pdf-plugin</artifactId>
        <executions>
            <execution>
                <id>pdf</id>
                <phase>site</phase>
                <goals>
                    <goal>pdf</goal>
                </goals>
    

    I can then get the pdf to be generated at the end of the site phase.