Search code examples
sbtjava-8javadocsonatype

Sbt Publish Java8 Project to Sonatype - JavaDoc Failure on Java8 Features


Hey I'm having a problem publishing a Java8 SBT Project to Sonatype.

When I run the publishSigned target, javadoc is complaining about Java8 features yet the code is compiling fine. If I put a scala file in the project, then scaladoc can compile it fine which is how I published it but now it's tagged with a scala version (_2.10).

Project is here - I'm assuming this is environment related though. javadoc on path is pointing to the same javac that is compiling the code. It's complaining about java8 features (eg lambdas - use of ">")

jasons-MacBook-Pro:better-java-monads jason$ sbt publishSigned
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
[info] Loading project definition from /Users/jason/Development/src/better-java-monads/project
[info] Set current project to better-monads (in build file:/Users/jason/Development/src/better-java-monads/)
[info] Packaging /Users/jason/Development/src/better-java-monads/target/scala-2.10/better-monads_2.10-0.0.1-sources.jar ...
[info] Done packaging.
[info] Main Java API documentation to /Users/jason/Development/src/better-java-monads/target/scala-2.10/api...
[info] :: delivering :: com.jason-goodwin#better-monads_2.10;0.0.1 :: 0.0.1 :: release :: Mon Feb 09 22:44:23 EST 2015
[info]  delivering ivy file to /Users/jason/Development/src/better-java-monads/target/scala-2.10/ivy-0.0.1.xml
[info] Wrote /Users/jason/Development/src/better-java-monads/target/scala-2.10/better-monads_2.10-0.0.1.pom
[info] Loading source file /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Either.java...
[info] Loading source file /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java...
[info] Loading source file /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/TryMapFunction.java...
[info] Loading source file /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/TrySupplier.java...
[info] Constructing Javadoc information...
[info] Standard Doclet version 1.8.0_31
[info] Building tree for all the packages and classes...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/com/jasongoodwin/monads/Either.html...
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Either.java:6: warning: no description for @param
[error]  * @param <L>
[error]    ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Either.java:7: warning: no description for @param
[error]  * @param <R>
[error]    ^
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/com/jasongoodwin/monads/Try.html...
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:39: error: bad use of '>'
[error]      * Try.ofFailable(() -> "1").<Integer>map((x) -> Integer.valueOf(x))
[error]                           ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:39: error: unknown tag: Integer
[error]      * Try.ofFailable(() -> "1").<Integer>map((x) -> Integer.valueOf(x))
[error]                                  ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:39: error: bad use of '>'
[error]      * Try.ofFailable(() -> "1").<Integer>map((x) -> Integer.valueOf(x))
[error]                                                    ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:43: warning: nested tag not allowed: <U>
[error]      * @return Success<U> or Failure<U>
[error]                                     ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:43: warning: empty <U> tag
[error]      * @return Success<U> or Failure<U>
[error]                                     ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:43: error: element not closed: U
[error]      * @return Success<U> or Failure<U>
[error]                                     ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:43: error: element not closed: U
[error]      * @return Success<U> or Failure<U>
[error]                       ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:52: error: block element not allowed within inline element <U>: p
[error]      * <p>
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:53: error: bad use of '>'
[error]      * Try.ofFailable(() -> "1").<Integer>flatMap((x) -> Try.ofFailable(() ->Integer.valueOf(x)))
[error]                           ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:53: error: unknown tag: Integer
[error]      * Try.ofFailable(() -> "1").<Integer>flatMap((x) -> Try.ofFailable(() ->Integer.valueOf(x)))
[error]                                  ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:53: error: bad use of '>'
[error]      * Try.ofFailable(() -> "1").<Integer>flatMap((x) -> Try.ofFailable(() ->Integer.valueOf(x)))
[error]                                                        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:53: error: bad use of '>'
[error]      * Try.ofFailable(() -> "1").<Integer>flatMap((x) -> Try.ofFailable(() ->Integer.valueOf(x)))
[error]                                                                             ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:58: warning: nested tag not allowed: <U>
[error]      * @return Success<U> or Failure<U>
[error]                       ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:58: warning: nested tag not allowed: <U>
[error]      * @return Success<U> or Failure<U>
[error]                                     ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:58: warning: empty <U> tag
[error]      * @return Success<U> or Failure<U>
[error]                                     ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:58: error: element not closed: U
[error]      * @return Success<U> or Failure<U>
[error]                                     ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:58: error: element not closed: U
[error]      * @return Success<U> or Failure<U>
[error]                       ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:49: error: element not closed: U
[error]      * Transform success or pass on failure, taking a Try<U> as the result.
[error]                                                          ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:66: error: bad use of '>'
[error]      * Try.ofFailable(() -> "not a number")
[error]                           ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:67: error: unknown tag: Integer
[error]      * .<Integer>flatMap((x) -> Try.ofFailable(() ->Integer.valueOf(x)))
[error]         ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:67: error: bad use of '>'
[error]      * .<Integer>flatMap((x) -> Try.ofFailable(() ->Integer.valueOf(x)))
[error]                               ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:67: error: bad use of '>'
[error]      * .<Integer>flatMap((x) -> Try.ofFailable(() ->Integer.valueOf(x)))
[error]                                                    ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:68: error: bad use of '>'
[error]      * .recover((t) -> 1)
[error]                      ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:71: warning: no description for @param
[error]      * @param f
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:72: warning: no description for @return
[error]      * @return
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:79: warning: no description for @param
[error]      * @param f
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:88: warning: no description for @param
[error]      * @param value
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:89: warning: no description for @return
[error]      * @return
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:97: warning: no description for @param
[error]      * @param f
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:98: warning: no description for @return
[error]      * @return
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:105: warning: no description for @return
[error]      * @return
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:106: warning: no description for @throws
[error]      * @throws Throwable
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:117: warning: no description for @param
[error]      * @param e
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:118: warning: no description for @param
[error]      * @param <U>
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:129: warning: no description for @param
[error]      * @param x
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:130: warning: no description for @param
[error]      * @param <U>
[error]        ^
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/Try.java:15: warning: no description for @param
[error]  * @param <T>
[error]    ^
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/com/jasongoodwin/monads/TryMapFunction.html...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/com/jasongoodwin/monads/TrySupplier.html...
[error] /Users/jason/Development/src/better-java-monads/src/main/java/com/jasongoodwin/monads/TrySupplier.java:6: warning: no description for @param
[error]  * @param <T>
[error]    ^
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/com/jasongoodwin/monads/package-frame.html...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/com/jasongoodwin/monads/package-summary.html...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/com/jasongoodwin/monads/package-tree.html...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/constant-values.html...
[info] Building index for all the packages and classes...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/overview-tree.html...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/index-all.html...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/deprecated-list.html...
[info] Building index for all classes...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/allclasses-frame.html...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/allclasses-noframe.html...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/index.html...
[info] Generating /Users/jason/Development/src/better-java-monads/target/scala-2.10/api/help-doc.html...
[info] 18 errors
[info] 22 warnings
[error] (compile:doc) javadoc returned nonzero exit code
[error] Total time: 2 s, completed 9-Feb-2015 10:44:25 PM

Solution

  • The first two warnings emerge from the Javadoc linting that has been added in Java 8. You can either document your type parameters or disable linting using -Xdoclint:none.

    The last four warnings are caused by your < and > that the Javadoc tool treats as HTML tags, you'll need to escape them using &lt; for < and &gt; for >.