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