Maven Javadoc Plugin
  1. Maven Javadoc Plugin
  2. MJAVADOC-138

javadoc:test-javadoc failed if target/classes not already created

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.3
    • Fix Version/s: 2.5
    • Labels:
      None
    • Number of attachments :
      0

      Description

      Using

      mvn clean javadoc:test-javadoc
      

      it could produce unsuccessful build or warning (depending the javadoc version used, i.e 1.4 vs 1.5)

      The options file contains:

      -classpath '[SNIP]/target/classes;[SNIP]/target/tests-classes;...'
      

      The explanation is that no target\classes was created before executing test-javadoc

        Issue Links

          Activity

          Hide
          Benjamin Bentmann added a comment -

          Well, why to depend on the compiled classes of the project anyway? Regarding the currently build project, you have something better than just bytecode, the sources! Unlike the class files, the sources carry documentation that javadoc can use to inherit documentation (e.g. for overriden methods). So, instead of

          -classpath '[SNIP]/target/classes;[SNIP]/target/tests-classes;...'

          I would rather aim at

          -classpath '...'
          -sourcepath '[SNIP]/src/main/java;[SNIP]/src/test/java;...'
          

          However, just including the project main sources on the source path has an unwanted effect: One will likely get Javadoc for production classes if those happen to reside in the same package as some test class (a common scenario for organizing tests). This effect stems from the fact, that the plugin currently specifies which packages to document and javadoc cannot distinguish from main and test sources. But that is easily solved: Instead of listing up packages, the plugin simply needs to scan all test source directories for Java files and put those in an arg file.

          Show
          Benjamin Bentmann added a comment - Well, why to depend on the compiled classes of the project anyway? Regarding the currently build project, you have something better than just bytecode, the sources! Unlike the class files, the sources carry documentation that javadoc can use to inherit documentation (e.g. for overriden methods). So, instead of -classpath '[SNIP]/target/classes;[SNIP]/target/tests-classes;...' I would rather aim at -classpath '...' -sourcepath '[SNIP]/src/main/java;[SNIP]/src/test/java;...' However, just including the project main sources on the source path has an unwanted effect: One will likely get Javadoc for production classes if those happen to reside in the same package as some test class (a common scenario for organizing tests). This effect stems from the fact, that the plugin currently specifies which packages to document and javadoc cannot distinguish from main and test sources. But that is easily solved: Instead of listing up packages, the plugin simply needs to scan all test source directories for Java files and put those in an arg file.
          Hide
          Vincent Siveton added a comment -

          Benjamin, could you provide us a patch?

          Show
          Vincent Siveton added a comment - Benjamin, could you provide us a patch?
          Hide
          Benjamin Bentmann added a comment -

          I really should stop commenting on other people's issues... Not sure if I am willing to spend time on this. I will check out its complexity during the weekend and let you know if I go for it or not.

          Show
          Benjamin Bentmann added a comment - I really should stop commenting on other people's issues... Not sure if I am willing to spend time on this. I will check out its complexity during the weekend and let you know if I go for it or not.
          Hide
          Benjamin Bentmann added a comment -

          Vincent, if there is urgent need to get this done, I can't help. If it can wait a couple of weeks, well, I will try.

          As a hotfix, annotating the mojo with @execute phase=test-compile to create the test classes by a forked Maven invocation should do.

          Show
          Benjamin Bentmann added a comment - Vincent, if there is urgent need to get this done, I can't help. If it can wait a couple of weeks, well, I will try. As a hotfix, annotating the mojo with @execute phase=test-compile to create the test classes by a forked Maven invocation should do.
          Hide
          Vincent Siveton added a comment -

          Benjamin, it is not so urgent, I am happy to waiting for it

          Show
          Vincent Siveton added a comment - Benjamin, it is not so urgent, I am happy to waiting for it
          Hide
          Vincent Siveton added a comment -

          Should be closed by MJAVADOC-168

          Show
          Vincent Siveton added a comment - Should be closed by MJAVADOC-168

            People

            • Assignee:
              Vincent Siveton
              Reporter:
              Vincent Siveton
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: