Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Blocker
-
Resolution: Duplicate
-
Affects Version/s: 2.6.1
-
Fix Version/s: 2.7
-
Labels:None
-
Environment:Java jdk1.6.0_16, Maven 2.2.1, Windows Vista 64-bit
Java jdk1.6.0_05, Maven 2.0.9, Windows XP 32-bit
-
Number of attachments :2
Description
I ran into a problem using Maven Javadoc Plugin 2.6.1 right after I released... I went from version 1.15 to 1.16-SNAPSHOT, and my 1.16-SNAPSHOT build failed (mvn clean install site) because Javadoc fails when run from the top-level parent. When it is building module A, the javadoc complains that module B and module C are missing – of course they are, they haven't been built yet. Note that running mvn clean install from module A works fine – the behavior is limited to running from the top-level parent – AND, if you run a mvn install for module B and module C, then you have given it what it needs and so you won't see the error.
The attached example exhibits the problem. It was created from the j2ee-simple archetype – I only added the explicit javadoc plugin declaration to the top level pom to control the version being used. To recreate the problem, unzip and simply: mvn clean install site. You will get an error message like:
[INFO] Unable to find resource 'root.project.projects:logging:jar:1.0' in repository central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) root.project.projects:logging:jar:1.0
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=root.project.projects -DartifactId=logging -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=root.project.projects -DartifactId=logging -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=
[id]
Path to dependency:
1) root.project:primary-source:jar:1.0
2) root.project.projects:logging:jar:1.0
----------
1 required artifact is missing.
for artifact:
root.project:primary-source:jar:1.0
from the specified remote repositories:
central (http://repo1.maven.org/maven2)
As you can see, it seems to think that a submodule (in this case root.project.projects:logging:jar:1.0) is necessary to build the javadoc for the project... Since this is the first time that this is being built, the submodule does not exist (yet).
I have replicated this problem on two different computing environments, so I'm convinced that the Maven version is not relevant.
(It is unclear to me if this problem also existed with Javadoc 2.6, but I don't think so.)
-
Hide
- bug.zip
- 27/Nov/09 1:04 AM
- 6 kB
- Anthony Whitford
-
- bug/ear/pom.xml 1 kB
- bug/ejbs/pom.xml 1.0 kB
- bug/ejbs/src/.../META-INF/ejb-jar.xml 0.0 kB
- bug/pom.xml 2 kB
- bug/primary-source/pom.xml 1 kB
- bug/projects/logging/pom.xml 0.3 kB
- bug/projects/pom.xml 0.4 kB
- bug/servlets/pom.xml 0.4 kB
- bug/servlets/servlet/pom.xml 0.5 kB
- bug/servlets/servlet/.../webapp/index.jsp 0.1 kB
- bug/servlets/servlet/.../WEB-INF/web.xml 0.0 kB
-
Hide
- javadoctest.zip
- 10/May/10 10:55 AM
- 9 kB
- Francis De Brabandere
-
- javadoctest/pom.xml 1 kB
- javadoctest/javadoctestimpl/pom.xml 0.9 kB
- javadoctest/javadoctestapi/pom.xml 0.8 kB
- javadoctest/javadoctestimpl/.../AppTest.java 0.6 kB
- javadoctest/javadoctestimpl/.../App.java 0.2 kB
- javadoctest/javadoctestapi/.../AppTest.java 0.6 kB
- javadoctest/javadoctestapi/.../App.java 0.2 kB
Issue Links
- depends upon
-
MJAVADOC-275
Creation of Javadoc attachments fails in multi-module project where modules have never been installed/deployed
-
- relates to
-
MJAVADOC-116
Impossible to aggregate javadoc if snapshot never built
-
Activity
Same thing for me with maven 2.2.1 and javadoc plugin 2.6.1. The release fails because it doesn't find artifacts it didn't yet build.
My config was :
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>aggregate</id> <goals> <goal>aggregate-jar</goal> </goals> </execution> </executions> </plugin>
I encountered the similar problems. After multi-scenario verifications, I'd say that
This is a regression, compare to version 2.6.
In a multi-module project, and say moduleA depends on moduleB, while running release:perform (of course, from the project top level), the javadoc of version 2.6.1, during building moduleB (be OK), will try to build moduleA (should it???), which will in turn cause various issues. If you're lucky, you'll see something like "Missing: moduleB.jar:THE_NEW_VERSION ..." (It's obvious: moduleB is being built and not completed yet). If not lucky, like me, I saw "System property 'env' is required to build this project." because the command arguments were not pass thru to the down stream build command.
Version 2.6 does not has that issue.
In my tests, maven 2.2.1 and maven-release-plugin 2.0-beta-9 were used.
Possible workaround:
Add to build>plugins:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-9</version>
<configuration>
<preparationGoals>clean verify install</preparationGoals>
</configuration>
</plugin>
The point is: do the install at preparation stage so that javadoc plugin could resolve inter-module dependencies.
This setup works for Maven 2.2.1 + javadocs 2.6.1
We have the same problem:
Multi-Module project
- parent
- war
- ear
The ear depends on the war project and the javadoc fails if I try to run (for example) javadoc:jar from the parent.
Version 2.6 has not this problem.
Please fix this issue!
Example:
Parent
Module A
Module B
B depends on A
For me it's not clear why the javadoc creation of module A "invoke" the
javadoc creation of module B?! Module A don't have any dependency to B.
regards
Andreas
Sorry I can't provide a test-case project, but this issue appears to have struck a multi-module project here:
Apache Maven 2.2.1 (r801777; 2009-08-07 05:16:01+1000)
Java version: 1.6.0_16
Java home: /usr/lib/jvm/java-6-sun-1.6.0.16/jre
Default locale: en_AU, platform encoding: UTF-8
OS name: "linux" version: "2.6.31-17-generic" arch: "amd64" Family: "unix"
org.apache.maven.plugins:maven-javadoc-plugin:2.6.1
org.apache.maven.plugins:maven-release-plugin:2.0-beta-9
I picked up javadoc 2.6.1 when I linked to a corporate POM. When I overrode this the project's top-level parent POM to go back to javadoc plugin 2.6, the release then succeeds.
My failure occured during the mvn release:perform phase of a release, with error message similar to the OP - Javadoc plugin complaining about dependencies. In my case Module B does depend on Module A, with Module A being built before it in the reactor. So this felt like some sort of reactor problem.
This is not the same problem as MJAVADOC-275 (I don't have that logging described there) and is not fixed with 2.7
Initial site builds using the javadoc plugin have been broken since 2.5. This is a major issue that everybody using maven will encounter when setting up CI builds!
see the provided javadoctest.zip
mvn clean install site
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] javadoctest
[INFO] javadoctestapi
[INFO] javadoctestimpl
[INFO] ------------------------------------------------------------------------
[INFO] Building javadoctest
[INFO] task-segment: [clean, install, site]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory /home/axeja/workspace/javadoctest/target
[INFO] [site:attach-descriptor {execution: default-attach-descriptor}]
[INFO] [install:install {execution: default-install}]
[INFO] Installing /home/axeja/workspace/javadoctest/pom.xml to /home/axeja/.m2/repository/javadoc/test/javadoctest/0.0.1-SNAPSHOT/javadoctest-0.0.1-SNAPSHOT.pom
[INFO] Preparing javadoc:test-javadoc
[INFO] No goals needed for project - skipping
[INFO] Preparing javadoc:test-aggregate
[INFO] ------------------------------------------------------------------------
[INFO] Building javadoctest
[INFO] ------------------------------------------------------------------------
[INFO] No goals needed for project - skipping
[INFO] ------------------------------------------------------------------------
[INFO] Building javadoctestapi
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/axeja/workspace/javadoctest/javadoctestapi/src/main/resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] Building javadoctestimpl
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/axeja/workspace/javadoctest/javadoctestimpl/src/main/resources
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) javadoc.test:javadoctestapi:jar:0.0.1-SNAPSHOT
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=javadoc.test -DartifactId=javadoctestapi -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=javadoc.test -DartifactId=javadoctestapi -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) javadoc.test:javadoctestimpl:jar:0.0.1-SNAPSHOT
2) javadoc.test:javadoctestapi:jar:0.0.1-SNAPSHOT
----------
1 required artifact is missing.
for artifact:
javadoc.test:javadoctestimpl:jar:0.0.1-SNAPSHOT
from the specified remote repositories:
central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8 seconds
[INFO] Finished at: Mon May 10 17:31:24 CEST 2010
[INFO] Final Memory: 42M/319M
[INFO] ------------------------------------------------------------------------
To reproduce:
rm ~/.m2/repository/javadoc -rf
mvn clean install site
I have a multi-module-project. If I use version 2.7 of the javadoc-plugin and version 2.1.1 of the site-plugin, For the initial build, I need to call the goal javadoc:aggregate bevore calling the goal site. So I have "clean deploy javadoc:aggregate site site:deploy".
For later builds and non multi-module-projects "clean deploy site site:deploy" is sufficient
I have this issue even with version 2.7 of the plugin. If someone has been able to get this working with v2.7 can they post the settings/configuration needed to get the plugin work in aggregate mode for a multi-module project where the project has not yet been built/installed for the current version.
The problem is still there is not fixed. Why the issue is closed?
It really seams to be incorrectly marked as "duplicate" !
Related IMHO also to: http://jira.codehaus.org/browse/MENFORCER-42
PLEASE REOPEN THIS ISSUE!!!!
Thanks,
Regards
Please, please reopen this issue.
It is a constant source of frustration in our multi-module-projects trying to use Maven for releasing.
The problem remains in 2.8 by the way.
Is this related to
MNG-3685or MJAVADOC-116?