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

Initial builds of a multi-module project fail

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Blocker 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

      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.)

      1. bug.zip
        6 kB
        Anthony Whitford
      2. javadoctest.zip
        9 kB
        Francis De Brabandere

        Issue Links

          Activity

          Hide
          Anthony Whitford added a comment -

          Is this related to MNG-3685 or MJAVADOC-116?

          Show
          Anthony Whitford added a comment - Is this related to MNG-3685 or MJAVADOC-116 ?
          Hide
          Arnaud HERITIER added a comment - - edited

          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>
          
          Show
          Arnaud HERITIER added a comment - - edited 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>
          Hide
          John Wu added a comment - - edited

          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.

          Show
          John Wu added a comment - - edited 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.
          Hide
          Lorand Somogyi added a comment -

          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

          Show
          Lorand Somogyi added a comment - 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
          Hide
          Thomas Wabner added a comment -

          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.

          Show
          Thomas Wabner added a comment - 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.
          Hide
          Andreas Höhmann added a comment -

          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

          Show
          Andreas Höhmann added a comment - 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
          Hide
          Brett Randall added a comment -

          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.

          Show
          Brett Randall added a comment - 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.
          Hide
          John Casey added a comment -

          seems like the same problem

          Show
          John Casey added a comment - seems like the same problem
          Hide
          John Casey added a comment -

          Duplicates MJAVADOC-275

          Show
          John Casey added a comment - Duplicates MJAVADOC-275
          Hide
          Francis De Brabandere added a comment -

          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] ------------------------------------------------------------------------
          
          Show
          Francis De Brabandere added a comment - 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] ------------------------------------------------------------------------
          Hide
          Francis De Brabandere added a comment -

          To reproduce:

          rm ~/.m2/repository/javadoc -rf
          mvn clean install site

          Show
          Francis De Brabandere added a comment - To reproduce: rm ~/.m2/repository/javadoc -rf mvn clean install site
          Hide
          Petra Flaitz added a comment -

          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

          Show
          Petra Flaitz added a comment - 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
          Hide
          Dinesh Mehta added a comment -

          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.

          Show
          Dinesh Mehta added a comment - 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.
          Hide
          Yegor Bugayenko added a comment -

          The problem is still there is not fixed. Why the issue is closed?

          Show
          Yegor Bugayenko added a comment - The problem is still there is not fixed. Why the issue is closed?
          Hide
          brundibar added a comment -

          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

          Show
          brundibar added a comment - 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
          Hide
          Mikis Seth Sørensen added a comment -

          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.

          Show
          Mikis Seth Sørensen added a comment - 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.

            People

            • Assignee:
              John Casey
              Reporter:
              Anthony Whitford
            • Votes:
              18 Vote for this issue
              Watchers:
              21 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development