GitHubActionのWindowsでMaven実行

ファイルロックされてファイルが消せないとか、Windowsで発生する問題を検知したいなと思い、GitHub ActionsでLinux&Windowsで実行したくなったので、調べたら、簡単にできた。

たとえば、.github/workflows/maven.ymlを

name: Java CI with Maven

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'
        distribution: 'temurin'
    - name: Build with Maven
      run: mvn -B package --file pom.xm

という感じで、作っておいておけば、良い感じだった。

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>

Maven Central Repositoryに配備する

オープンソースであれば、Maven Central RepositoryにSonatype OSS Maven Repository Usage Guideの手順で置くことができる。やることとして、SonatypeのJIRAにアカウントを作成してチケットを上げて、gpgのキーを作っておいて、pom.xmlを変更してリリースすれば良い。あとは、Sonatypeのリポジトリ管理ツールでCloseしてReleaseする感じ。まぁ、一回やってしまうとこういうことね、という感じなのだけど、初めはわかりにくいかも…。そんな感じで、CodeLibsに置いてあったElasticsearchプラグインなどをCentralに置きました。CodeLibsのリポジトリはここです。そういえば、あとはドメインは持っておいたほうが良いのかも。そのパッケージ名以下で置くことになると思うので…。

Archiva 1.4 M3のインストール

ArchivaはApacheから提供されているMavenなどのリポジトリ管理ツールである。Mavenなどをよく使うと成果物の置き場とかには悩むかと思うがそれを管理することができる。というわけで、説明はここにあるけど、1.4 M3を既存のTomcat 7などに入れる方法を書いておく。
まず、Archivaをここからダウンロードする。ダウンロードしたら

$ cd $TOMCAT_HOME
$ mkdir archiva
$ cp ~/Downloads/apache-archiva-js-1.4-M3.war archiva

という感じでディレクトリを作っておいておく。そんでさらに、derby-10.9.1.0.jar、activation-1.1.1.jar、mail-1.4.6-rc1.jarをMavenリポジトリなどから入手してlibに置く。

$ cp ~/Downloads/derby-10.9.1.0.jar ~/Downloads/activation-1.1.1.jar ~/Downloads/mail-1.4.6-rc1.jar lib

次にarchiva.xmlを生成する。

$ vi conf/Catalina/localhost/archiva.xml

内容は以下のような感じ。

<Context path="/archiva"
            docBase="${catalina.home}/archiva/apache-archiva-js-1.4-M3.war">
  <Resource name="jdbc/users" auth="Container" type="javax.sql.DataSource"
    username="sa" password="" driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
    url="jdbc:derby:${catalina.home}/archiva/database/users;create=true" />
  <Resource name="jdbc/archiva" auth="Container" type="javax.sql.DataSource"
    username="sa" password="" driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
    url="jdbc:derby:${catalina.home}/archiva/database/archiva;create=true" />
  <Resource name="mail/Session" auth="Container"
    type="javax.mail.Session" mail.smtp.host="localhost"/>
</Context>

そして、setenv.shに追記しておく。

$ vi bin/setenv.sh
export CATALINA_OPTS="$CATALINA_OPTS -Dappserver.home=$CATALINA_HOME -Dappserver.base=$CATALINA_HOME"

という感じであとはTomcatを起動すれば良い。