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>

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

Tomcat 10.1でJSTLを利用する

最近、JSPを利用する人も少ないためか、JSTLをTomcatで使うための情報がなさそうな雰囲気でもあるので、メモがてらにポイントを書いておく。

まずは依存関係に入れるJARファイルですが、Mavenであれば以下の感じで追加する。

    <dependency>
      <groupId>jakarta.servlet.jsp.jstl</groupId>
      <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
      <version>3.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>jakarta.servlet.jsp.jstl</artifactId>
      <version>3.0.1</version>
    </dependency>

jakarta.servlet.jsp.jstlが実装なので、これを入れないと動かない。(これでちょっとハマりました…) なので、後者の方を入れないと以下のようなエラーが出ます。

Caused by: org.apache.jasper.JasperException: /WEB-INF/view/index.jsp (line: [1], column: [1]) Unable to find taglib [c] for URI: [jakarta.tags.core]

JARファイルを依存関係に追加しておけば、あとは、taglibの宣言も

<%@taglib prefix="c" uri="jakarta.tags.core"%>

のような感じで、http://〜で指定したuriがjakarta.tags.〜に変わってます。これも書き変えておきます。

この辺を対応すれば、Tomcatの以前のバージョンからも移行できると思います。(javaxからjakartaパッケージにいろいろと変えるという大きな作業はあるとは思いますが…)

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に戻すなどが良さそう。