Maven javadoc pluginでjavadocに著作権を表示する

Javadoc著作権表示をする方法について調べたのでまとめておきます。

 

 

[Maven Javadoc Plugin]

Maven Javadoc Pluginの基本的な使い方は公式サイトに記載されている通りです。 

maven.apache.org

 

pom.xmlの基本的な書き方は以下の通り。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          ...
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

 

これでpom.xmlのあるディレクトリでmvn javadoc:javadocコマンドを実行すると、Javadocを生成できます。

outputDirectoryの設定をしない場合、target/site/apidocsディレクトリにindex.htmlなどが出力されます。

 

[bottomパラメータ]

出力されたindex.htmlを見ると、次のようになっています。

f:id:kidani_a:20210410205658p:plain

 

一番下の部分に、Copyright〜著作権表示がされています。

bottomパラメーターの説明を見ると、デフォルト値は以下のようになっています。

Copyright &#169; {inceptionYear}&#x2013;{currentYear} {organizationName}. All rights reserved.

&#169;はHTMLの文字実体参照で、ブラウザで表示すると©となります。&copy;&#xA9;とも書けます。

&#x2013;は同様にブラウザで表示すると-となりますが、inceptionYearが設定されていない場合は表示されないようです。

 

▼organizationNameを設定する

このままだと著作権が誰にあるのか不明なので、organizationNameを設定してみます。

pom.xmlに以下のように追記します。

<project>
  ...
  <organization>
    <name>kdnakt</name>
  </organization>
  ...
  <build>
    ...
  </build>
  ...
</project>

 

これでbottomの表示がCopyright © 2021 kdnakt. All rights reserved.となるはずです。mvn javadoc:javadocコマンドを実行してみます。

f:id:kidani_a:20210411000124p:plain

上手く行ったようです。

 

inceptionYearを設定する場合は、pom.xmlを以下のように書きます。

<project>
  ...
  <organization>
    <name>kdnakt</name>
  </organization>
  <inceptionYear>2020</inceptionYear>
  ...
  <build>
    ...
  </build>
  ...
</project>

 

出力されたJavadocは以下のようになります。

f:id:kidani_a:20210411000819p:plain

 

organizationNameinceptionYearで微妙にpom.xmlの書き方が異なるので注意が必要です。

 

▼オリジナルのbottomを出力する

bottom著作権表示部分に独自のメッセージを出力したい場合は、以下のようにbottomパラメーターを設定します。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <bottom>© {currentYear} Made in Tokyo. </bottom>
          ...
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

 

出力されたJavadocは以下のようになります。

f:id:kidani_a:20210411001520p:plain

 

bottomパラメーターにはHTMLを記述することもできます。

しかし、pom.xmlにそのままHTMLタグを記載してしまうと、mvn javadoc:javadocコマンドの実行時に「Unable to parse configuration of mojo org.apache.maven.plugins:maven-javadoc-plugin:3.2.0:javadoc: Basic element 'bottom' must not contain child elements」というエラーが出てしまいます。

f:id:kidani_a:20210411084518p:plain

 

XMLにHTMLタグを記述する場合には、&lt;&gt;のようにエスケープするか、CDATAセクションを利用します。

CDATASection - Web API | MDN

 

CDATAセクションを利用してbottomパラメーターにHTMLタグを設定すると以下のようになります。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <bottom><![CDATA[<strike>&copy; Made in Japan</strike>]]></bottom>
          ...
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

 

出力されたJavadocは以下のようになります。

f:id:kidani_a:20210411101800p:plain

 

[著作権表示を空にする]

CDATAセクションを利用して、コンテンツなしでタグのみのHTMLを記述すると著作権表示を消すこともできます。

 

pom.xmlは以下のようになります。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <bottom><![CDATA[<div></div>]]></bottom>
          ...
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

 

出力されたJavadocは以下のようになります。

f:id:kidani_a:20210411102153p:plain

 

[まとめ]

  • Maven Javadoc Pluginを利用してJavadocを生成した
  • 著作権表示に組織名を表示する場合にはpom.xml<organization><name>組織名</name></organization>を追記する
  • 著作権表示のかわりに独自の内容を表示する場合には<configuration><bottom>独自の内容</bottom></configuration>のように書く
  • 試した内容は以下のリポジトリにまとめてある

github.com