Uploaded image for project: 'Maven Javadoc Plugin'
  1. Maven Javadoc Plugin
  2. MJAVADOC-538

JVM "JAVA_TOOL_OPTIONS" or "_JAVA_OPTIONS" message detected as javadoc warning, triggers failure



    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.0.1
    • Fix Version/s: 3.1.0
    • Component/s: None
    • Labels:
    • Environment:
      Maven 3.5.4
      Java 1.8.0_181


      When an environment variable _JAVA_OPTIONS or JAVA_TOOL_OPTIONS is defined, every JVM that starts will output a message to inform users of these options being picked up:

      $ export JAVA_TOOL_OPTIONS=-Dfoo
      $ java -version                 
      Picked up JAVA_TOOL_OPTIONS: -Dfoo
      java version "1.8.0_181"
      Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
      Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

      Apparently this message cannot be suppressed, that's on purpose an won't change: https://bugs.openjdk.java.net/browse/JDK-8039152


      Unfortunately, this message seems to be interpreted by the maven-javadoc-plugin as a warning:

      [INFO] --- maven-javadoc-plugin:3.0.1:javadoc-no-fork (generate-javadoc) @ hibernate-search-util-internal-common ---
      [INFO] The goal 'org.apache.maven.plugins:maven-javadoc-plugin:3.0.1:javadoc' has not been previously called for the module: 'org.hibernate.search:hibernate-search-util-internal-test:jar:6.0.0-SNAPSHOT'. Trying to invoke it...
      [WARN] Maven will be executed in interactive mode, but no input stream has been configured for this MavenInvoker instance.
      Picked up JAVA_TOOL_OPTIONS: -Dfoo
      [WARNING] Creating fake javadoc directory to prevent repeated invocations: /home/yrodiere/workspaces/main/hibernate-search-parent/util/internal/test/target/site/apidocs
      [ERROR] Error fetching link: /home/yrodiere/workspaces/main/hibernate-search-parent/util/internal/test/target/site/apidocs/package-list. Ignored it.
      [WARNING] Javadoc Warnings
      [WARNING] Picked up JAVA_TOOL_OPTIONS: -Dfoo

      (see the last line, the message appears in the list of warnings)

      No big deal... until you enable the failOnWarnings option. Then the whole build will fail just because some JVM detected an environment variable...

      I couldn't find any workaround, except disabling the failOnWarnings options, but that's more a surrender than a workaround.

      Note that the definition of _JAVA_OPTIONS or JAVA_TOOL_OPTIONS is not exactly an exotic use case, especially on Continuous Integration platforms. Travis CI uses _JAVA_OPTIONS to set JVM memory limits in its containerized environments, and the Jenkins CI Pipeline Maven plugin uses JAVA_TOOL_OPTIONS to pass options to Maven processes transparently.


          Issue Links



              • Assignee:
                rfscholte Robert Scholte
                yrodiere Yoann Rodière
              • Votes:
                1 Vote for this issue
                5 Start watching this issue


                • Created: