Maven 2.x Javadoc Plugin

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
  • Component/s: None
  • 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

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: