読者です 読者をやめる 読者になる 読者になる

ソフトウェアエンジニア現役続行

雑多なことを綴ります

Confluence のソースコードをビルドする方法

コラボレーションツールとして人気があるアトラシアン社の Confluence はソースコードが公開されているので、ソースコードからビルドしてサーバーにデプロイしてみました。やり方はアトラシアン社の Building Confluence From Source Code にまとまっていて、warファイルをビルドするだけならそのページの中の Building WAR Destribution のセクションに書かれているとおりに 1) ソースコードをダウンロードして、2) ファイルを展開して、3) ビルドスクリプト (build.sh または build.bat) を実行すればOKです。

ですが実際にやってみると、何度も maven の依存関係が解決できなくて何度もビルドにつまづいたので、解決方法をここに記載しておきます。なお私がビルドしたのは 2014年4月27日時点で安定版で最新の 5.4.4 です。

追記: 2014年4月29日にリリースされた 5.5 でも下記の方法でビルドできました

足りない jar ライブラリを手動でインストールしたのにビルドが通らない

ビルドスクリプトは、ソースコードパッケージに同梱されている maven を使って、依存しているライブラリをダウンロードしながらビルドを進めていきます。ですが、いくとかのライブラリを見つけることができずにエラーになります。私が Confluence 5.4.4 のソースコードをビルドしたときは、以下のライブラリが見つからなくてエラーになりました:

  • jms-1.1.jar
  • mail.jar
  • activation-1.0.2.jar

上記のライブラリを Oracle の公式サイトなどから入手して、エラーメッセージに書かれているとおりに以下のコマンドを実行して再ビルドしても、同じエラーが出て、前に進められませんでした。

$ mvn install:install-file -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 -Dpackaging=jar -Dfile=/path/to/jms-1.1.jar

$ mvn install:install-file -DgroupId=javax.mail -DartifactId=mail -Dversion=1.3.3 -Dpackaging=jar -Dfile=/path/to/mail.jar

$ mvn install:install-file -DgroupId=javax.activation -DartifactId=activation -Dversion=1.0.2 -Dpackaging=jar -Dfile=/path/to/activation-1.0.2.jar

調べたところ、ビルドスクリプトから呼び出される maven コマンドが利用するローカルリポジトリ、自分のマシンの標準リポジトリMACLinux なら $HOME/.m2/repository)ではなくて、ソースコードパッケージが展開された場所の localrepo ディレクトリでした。ですので上記の mvn install:install-file コマンドは以下のように -Dmaven.repo.local オプションでこの localrepo ディレクトリを指定して実行する必要があります。

$ mvn install:install-file -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 -Dpackaging=jar -Dfile=/path/to/jms-1.1.jar -Dmaven.repo.local=/path/to/localrepo

$ mvn install:install-file -DgroupId=javax.mail -DartifactId=mail -Dversion=1.3.3 -Dpackaging=jar -Dfile=/path/to/mail.jar -Dmaven.repo.local=/path/to/localrepo

$ mvn install:install-file -DgroupId=javax.activation -DartifactId=activation -Dversion=1.0.2 -Dpackaging=jar -Dfile=/path/to/activation-1.0.2.jar -Dmaven.repo.local=/path/to/localrepo

(-Dfile にはローカル上の実際の jar ファイルへのパス、-Dmaven.repo.local にはソースコードパッケージが展開された場所の localrepo ディレクトリを指定します)

テストに必要な jar ライブラリが見つからない

上記でビルドがすべて通るかと思ったら、以下の2つのライブラリがどうしてもインターネット上で見つけられませんでした。

  • db2jcc4-9.7.jar
  • oracle-jdbc15-11.2.0.1.0.jar

上記のファイルはビルド時に実行されるテストスクリプトでのみ必要なライブラリのため、このテストをスキップさせることにしました。具体的には、confluence-project/confluence-build/confluence-test-runner/pom.xml ファイルの <modules> の中の <module>confluence-multi-test</module> をコメントアウトしました。