javadoc: error – The code being documented uses modules

Java 11を使ってmvn javadoc:javadocとしたときに

[ERROR] Exit code: 1 - javadoc: error - The code being documented uses modules but the packages defined in https://docs.oracle.com/javase/8/docs/api/ are in the unnamed module.

とか

[ERROR] Exit code: 1 - javadoc: エラー - ドキュメント化しようとしているコードではモジュールが使用されていますが、https://docs.oracle.com/javase/8/docs/api/で定義されているパッケージは名前のないモジュールのものです。

のようなエラーが出るときには、JavaDocの参照するJavaのソースコードのバージョンの問題なので、pom.xmlのjavadocプラグインで、sourceを次のようにして押しておく

      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.0.1</version>
        <configuration>
          <encoding>UTF-8</encoding>
          <docencoding>UTF-8</docencoding>
          <charset>UTF-8</charset>
          <source>8</source>
        </configuration>
      </plugin>

Fessにsmb1://〜を追加

cifsのファイル群をjcifsでクロールしているのだけど、sambaが提供しているjcifsだとSMB1しかアクセスできず、Fess 12.2からjcifs-ngベースのものに移行したのだけど、世の中にはNASとかWindows以外にSMBを話すファイルサーバとかあって、jcifs-ngだと動かないケースがあったりして、なかなかのつらさがある…。

問題が出るファイルサーバとかだと、昔のjcifsベースのものだと動くらしいので、Fessとしてはどうしたものかと考えて、回避策を用意した。普通はsmb://〜で指定するけど、昔のjcifsのSMB1で良いなら、smb1://〜という指定にすれば、昔のjcifsベースの処理で動くようにしてみた。

という感じで、Fess 12.5.2からsmb1://〜を使えるようになる予定。

FessのAzure AD対応

Fess 12.6からAzure ADの認証に対応する予定。対応するためにadal4jを利用したので、OpenID Connectによる認証になる。これに合わせて、SSOまわりの実装をいろいろと変更したので、12.5に入れるには大きな変更になったので、12.6にいれることにした。

実装するにあたり、active-directory-java-webapp-openidconnectというサンプルプロジェクトを参考にしながら作ったのだけど、このサンプルが所々にゴミが残っていたり、コピペ的に作ると痛い目を見る感じだったので、読み解きつつ、リファクタリングして、Fessには取り込んでおいた。

ということで、Azure PortalでAzure ADにアプリ登録をして、system.propertiesに以下を記述することで、Fessでhttp://localhost:8080/sso/にアクセスすると、Azure ADに認証に行ってFessでログイン状態にすることができるようになる。

sso.type=aad
aad.tenant=<tenant_name>.onmicrosoft.com
aad.client.id=...
aad.client.secret=...

sso.typeは以前のバージョンではfess_config.propertiesで設定していたけど、system.propertiesに移すことで、設定がオンラインで変更可能になった。