maven-javadoc-plugin 3.6以降のエラー

いつものようにmvn release:performを実行したら、以下のようなエラーに遭遇した。

[INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.7.0:jar (attach-javadocs) on project fess-crawler-es: Execution attach-javadocs of goal org.apache.maven.plugins:maven-javadoc-plugin:3.7.0:jar failed: Unable to derive module descriptor for .../.m2/repository/org/opensearch/opensearch/2.19.1/opensearch-2.19.1.jar: Provider class org.apache.lucene.search.suggest.document.Completion50PostingsFormat not in JAR file opensearch-2.19.1.jar -> [Help 1]

なんだろうと思ったけど、最近、pom.xmlのmaven-javadoc-pluginを3.7.0に上げたのだが、原因っぽい。このプラグインが JPMS(Java モジュールシステム)用のモジュール記述子を自動生成しようして、エラーになる。たぶん、opensearch-2.19.1.jarに問題があるのかもしれない。

回避する方法としては、pom.xmlで

    <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.7.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<legacyMode>true</legacyMode>
</configuration>
</plugin>

とするか、mvn release:performで

mvn release:perform -Darguments="-Dmaven.javadoc.skip=true"

とするかになる。

jacoco.execが生成されない

pom.xmlにjacocoを追加したものの、実行してみると

[INFO] Skipping JaCoCo execution due to missing execution data file.

みたいな感じのメッセージが表示され、jacocoが実行されない。target/jacoco.execが生成されていないためなのだが、これが起きる原因としては、surefireの設定が関係している場合がある。たとえば、pom.xmlのsurefire設定で

<argLine>${test.command.args}</argLine>

という感じで設定していると、jacocoの引数が渡されなくなるようなので、

<argLine>@{argLine} ${test.command.args}</argLine>

という感じに変更すると解決する。

maven-source-pluginでエラーが出る

maven-source-pluginを3.3.0に上げたら、以下のようなエラーが出るようになった。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-source-plugin:3.3.0:jar (source-jar) on project fess-crawler: Presumably you have configured maven-source-plugn to execute twice times in your build. You have to configure a classifier for at least on of them. -> [Help 1]

これだと思うのだが、mvn package javadoc:jarみたいな感じで、マルチプロジェクトとかで複数の処理があると起きるみたい。とりあえず、3.3.0にする必要がないなら、3.2.1に戻すなどが良さそう。