Maven Doxia
  1. Maven Doxia
  2. DOXIA-373

Macro snippet with file option in a multi-pom project

    Details

    • Type: Bug Bug
    • Status: Open Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Module - Apt
    • Labels:
      None
    • Environment:
      Window XP
    • Number of attachments :
      0

      Description

      The project is a multi pom project. In the main pom project, I declare the other pom like this :

         <modules>
              <module>../moduleA</module>
              <module>../moduleB</module>
         ...
         </modules>
      

      To avoid duplicate code,I use the macro snippet in my documentation in modules A, B and Main. For convenient, the following syntax :

       %{snippet|id=myid|file=src/main/java/mypackage/File.java} 

      .

      When I build the site from each module A or B, all work fine. But when the site was generated from the main module, the snippet seem not work : All the pages who include a snippet's macros in A or B are not generated. I obtain the same problem if i do a simple site or a site:stage

      The maven site work fine work include pictures and schemas of local documentation (in A et B). I try to use
      the velocity macro and transform MyFile.apt to MyFile.apt.vm like these :

      MyFile.apt.vm
      %{snippet|id=myid|file=${basedir}/src/main/java/mypackage/File.java}.
      

      It's fail too.

      I use maven 2.1.0

      Sorry for my poor english

        Issue Links

          Activity

          Hide
          Harald Brabenetz added a comment -

          Hi,
          I found a hint of the Problem in:
          https://svn.apache.org/repos/asf/maven/doxia/doxia/tags/doxia-1.1.1/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
          At line 89.

          Based on this hint i found a temporary workaround (maybe someone other want know it).

          1. I create a Class with "public static void main(String[] args)":

          public static void main(final String[] args) {
          if (args.length != 1)

          { System.out.println("[ERROR]: This Class needs exacly one argument: The Projects basedir! " // + "The args was: " + Arrays.toString(args)); }

          // set the SystemProperty
          System.setProperty("basedir", args[0]);
          System.out.println("[INFO]: Set SystemProperty 'basedir' successfull to: " + args[0]);
          }

          2. And added this Class (e.g.: "com.myProject.MyClass") to the projects pom.xml:

          <plugin>
          <!-- Workaround for Maven Site generation Bug: "Macro snippet with file option in a multi-pom project" -->
          <!-- Bugreport: DOXIA-373 See: http://jira.codehaus.org/browse/DOXIA-373 -->
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>1.1.1</version>
          <executions>
          <execution>
          <id>site-plugin-bugfix-workaround</id>
          <phase>pre-site</phase>
          <goals>
          <goal>java</goal>
          </goals>
          <configuration>
          <mainClass>com.myProject.MyClass</mainClass>
          <arguments>
          <argument>$

          {basedir}

          </argument>
          </arguments>
          </configuration>
          </execution>
          </executions>
          </plugin>

          Now this Project works also in multi-pom projects.

          regards,
          Harald

          Show
          Harald Brabenetz added a comment - Hi, I found a hint of the Problem in: https://svn.apache.org/repos/asf/maven/doxia/doxia/tags/doxia-1.1.1/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java At line 89. Based on this hint i found a temporary workaround (maybe someone other want know it). 1. I create a Class with "public static void main(String[] args)": public static void main(final String[] args) { if (args.length != 1) { System.out.println("[ERROR]: This Class needs exacly one argument: The Projects basedir! " // + "The args was: " + Arrays.toString(args)); } // set the SystemProperty System.setProperty("basedir", args [0] ); System.out.println(" [INFO] : Set SystemProperty 'basedir' successfull to: " + args [0] ); } 2. And added this Class (e.g.: "com.myProject.MyClass") to the projects pom.xml: <plugin> <!-- Workaround for Maven Site generation Bug: "Macro snippet with file option in a multi-pom project" --> <!-- Bugreport: DOXIA-373 See: http://jira.codehaus.org/browse/DOXIA-373 --> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1.1</version> <executions> <execution> <id>site-plugin-bugfix-workaround</id> <phase>pre-site</phase> <goals> <goal>java</goal> </goals> <configuration> <mainClass>com.myProject.MyClass</mainClass> <arguments> <argument>$ {basedir} </argument> </arguments> </configuration> </execution> </executions> </plugin> Now this Project works also in multi-pom projects. regards, Harald
          Lukas Theussl made changes -
          Field Original Value New Value
          Link This issue depends upon DOXIA-224 [ DOXIA-224 ]
          Hide
          Lukas Theussl added a comment -

          The problem is that current parsers don't know anything about the origin of the sources they are parsing, see DOXIA-224. The getBasedir() in AbstractParser returns the directory where the build is started, unless the system property "basedir" is set, so the workaround above is valid.

          Show
          Lukas Theussl added a comment - The problem is that current parsers don't know anything about the origin of the sources they are parsing, see DOXIA-224 . The getBasedir() in AbstractParser returns the directory where the build is started, unless the system property "basedir" is set, so the workaround above is valid.
          Lukas Theussl made changes -
          Fix Version/s 1.2 [ 14082 ]
          Hide
          Daniel TISCHER added a comment -

          I'm getting the file to parse from the target directory, in my index.apt.vm:

          %{snippet|id=maven-local-repo|file=$

          {project.build.outputDirectory}

          /settings.xml}

          Now if I add a trailing space after the closing brace of the snippet macro, it fails the first time. The second time, the build succeeds but the index.html is empty. Remove the space, clean build and it works again.

          Show
          Daniel TISCHER added a comment - I'm getting the file to parse from the target directory, in my index.apt.vm: %{snippet|id=maven-local-repo|file=$ {project.build.outputDirectory} /settings.xml} Now if I add a trailing space after the closing brace of the snippet macro, it fails the first time. The second time, the build succeeds but the index.html is empty. Remove the space, clean build and it works again.
          Lukas Theussl made changes -
          Fix Version/s 1.2 [ 14082 ]
          Hide
          Andreas Veithen added a comment -

          A workaround for this issue is to use (assuming that the file is a Velocity templete, i.e. has suffix .apt.vm instead of .apt):

          %{snippet|id=deployment|file=$

          {project.basedir}

          /src/test/resources/client-config.wsdd}

          Show
          Andreas Veithen added a comment - A workaround for this issue is to use (assuming that the file is a Velocity templete, i.e. has suffix .apt.vm instead of .apt): %{snippet|id=deployment|file=$ {project.basedir} /src/test/resources/client-config.wsdd}
          Robert Scholte made changes -
          Description The project is a multi pom project. In the main pom project, I declare the other pom like this :
             <modules>
                  <module>../moduleA</module>
                  <module>../moduleB</module>
             ...
             </modules>

          To avoid duplicate code,I use the macro snippet in my documentation in modules A, B and Main. For convenient, the following syntax : %{snippet|id=myid|file=src/main/java/mypackage/File.java}.

          When I build the site from each module A or B, all work fine. But when the site was generated from the main module, the snippet seem not work : All the pages who include a snippet's macros in A or B are not generated. I obtain the same problem if i do a simple site or a site:stage
            
          The maven site work fine work include pictures and schemas of local documentation (in A et B). I try to use
          the velocity macro and transform MyFile.apt to MyFile.apt.vm like these :

          MyFile.apt.vm
          %{snippet|id=myid|file=${basedir}/src/main/java/mypackage/File.java}.

          It's fail too.

          I use maven 2.1.0

          Sorry for my poor english
          The project is a multi pom project. In the main pom project, I declare the other pom like this :
          {code:xml}
             <modules>
                  <module>../moduleA</module>
                  <module>../moduleB</module>
             ...
             </modules>
          {code}
          To avoid duplicate code,I use the macro snippet in my documentation in modules A, B and Main. For convenient, the following syntax :
          {noformat} %{snippet|id=myid|file=src/main/java/mypackage/File.java} {noformat}.

          When I build the site from each module A or B, all work fine. But when the site was generated from the main module, the snippet seem not work : All the pages who include a snippet's macros in A or B are not generated. I obtain the same problem if i do a simple site or a site:stage
            
          The maven site work fine work include pictures and schemas of local documentation (in A et B). I try to use
          the velocity macro and transform {{MyFile.apt}} to {{MyFile.apt.vm}} like these :

          {noformat}
          MyFile.apt.vm
          %{snippet|id=myid|file=${basedir}/src/main/java/mypackage/File.java}.
          {noformat}

          It's fail too.

          I use maven 2.1.0

          Sorry for my poor english
          Robert Scholte made changes -
          Component/s Module - Apt [ 12814 ]

            People

            • Assignee:
              Unassigned
              Reporter:
              poulfich
            • Votes:
              5 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated: