タツノオトシゴのブログ

主にJavaに関するものです。

Java 1.8.0_121以降でJavaScriptを含むJavadocを生成する(maven)

JDK 1.8.0_121以降から、JavadocJavaScriptを含むJavaScriptを含む場合、オプション「--allow-script-in-comments」が必要になり、次のようなエラーがでるようになりました。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.083 s
[INFO] Finished at: 2017-09-01T23:49:17+09:00
[INFO] Final Memory: 17M/226M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:javadoc (default-cli) on project XXX: An error has occurred in JavaDocs report generation: 
[ERROR] Exit code: 1 - javadoc: エラー - -headerの引数にJavaScriptが含まれています。
[ERROR] --allow-script-in-commentsを使用して、JavaScriptの使用を許可してください。
[ERROR] 
[ERROR] Command line was: C:\usr\java\jdk1.8.0_121\jre\..\bin\javadoc.exe -J-Xmx512m @options @packages
・・・

対応として、エラーメッセージの通りに指定します。
maven-javadoc-pluginを使用している場合は次のように指定します。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.10.4</version>
    <configuration>
        <nohelp>true</nohelp>
        <charset>UTF-8</charset>
        <encoding>UTF-8</encoding>
        <docencoding>UTF-8</docencoding>
        <locale>ja_JP</locale>
        <maxmemory>512m</maxmemory>
        <links>
            <link>https://docs.oracle.com/javase/jp/8/docs/api/</link>
            <link>http://super-csv.github.io/super-csv/apidocs/</link>
        </links>
        <stylesheetfile>${basedir}/src/main/javadoc/stylesheet.css</stylesheetfile>
        <docfilessubdirs>true</docfilessubdirs>
        
        <!-- スクリプトの埋め込む記述を許可する指定 -->
        <additionalparam>--allow-script-in-comments</additionalparam>
        
        <!-- ヘッダーにスクリプトを埋め込む記述 -->
        <header>${project.name} ${project.version}
<![CDATA[
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/styles/default.min.css">
<script src="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/highlight.min.js"></script>
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script>
$(document).ready(function() {
$('pre.highlight code').each(function(i, block) {
hljs.highlightBlock(block);
});
});
</script>
]]>
        </header>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>