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を起動すれば良い。

MavenでのServlet 3.0の依存関係

FessではTomcat 7の環境を利用しているのだけど、依存関係をいじったら

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletOutputStream

という感じで怒られるようになった…。たぶん、今まで微妙な依存関係でうまくいっていたのかもしれないけど、その辺を変更してしまったため、この問題が起きるようになってしまったのだと思う。ここにも依存関係の話題があるのだけど、今まではServlet API 3.0用に以下の感じで依存関係を記述していた。

javax
javaee-web-api
6.0
provided

これだとうまく行かないようなので、

javax.servlet
javax.servlet-api
3.0.1
provided

と書くことで良いみたい。というわけで、しばらくこれで様子を見てみよう。

JSCPプラグインの残バグ

JSPCのMavenプラグインのバグたちは、codehaus.orgのJIRAで管理されている。今日は2つほどクローズしてみた。っていうか、重複とか、質問っぽいissueが多いので、問答無用でクローズしても良さそうなものがあるのだよね…。読むのが面倒だから、そんなものはあげないでほしい。アバウトな情報を再現させたりするのが大変なのよ。まぁ、中には適切に問題報告してくれるものもあるので、それらはありがたいのだけど。そんな感じで、潰し続けて、残り10個まで来ました。年内には全部潰せるかしら…。