普段、自分たちが構築した共通ライブラリ(jar)はMavenの社内リポジトリ(internal repository)に格納しています。
Jenkinsでナイトリービルドして、生成されたJarを、そのままJenkinsが社内リポジトリにアップするので、ほとんど人手もかからず、かなり重宝しています(^^)
そんな便利なMavenの社内リポジトリですが、状況によっては、アクセスできない人が関わる…なんてケースもあるかと思います(^^;
実際、そうなったのですが…。
どんなケースだよ!って感じですが、簡単に書くと
- 社外の人へ、実装の参考情報としてソースコードを渡す
- 実際動かしたりコード触るけど、あくまで参考なのでリポジトリ作る手間とかは省きたい
みたいな状況…(^^;すみません、よくわからないですね。
まあ要はタイトルの通りな状況があった場合の話です。
やり方は色々あるのかもしれませんが、以下サイトの(2)を参考にさせて頂きました。
Mavenプロジェクトで3rdパーティJARを扱う方法
pom.xmlに
<dependency>
<groupId>jp.co.hoge</groupId>
<artifactId>XXX</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${basedir}/../lib/XXX-1.0.0.jar</systemPath>
</dependency>
とか書いて、私の場合はNetBeansのプロジェクトフォルダをデフォルトのままにしているので
C:\Users\myname\Documents\NetBeansProjects\lib
に必要なjarを入れ込みます。
で、上記サイトのコメント欄にあるように、このままだとwarとして固めたときにWEB-INF/libへコピーされず起動できないので、maven-dependency-pluginのexecutionで以下加えました。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>compile</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
<includeArtifactIds>XXX,YYY</includeArtifactIds>
</configuration>
</execution>
</executions>
<plugin>
これでビルド時にWEB-INF/lib配下へコピーされて、warとして動かすことができました。
完全にMavenのメリットを殺してるようなやり方なので、冒頭に書いたような特殊なシチュエーション以外で使うことはないし、使わないことをお勧めしますが、自分メモのために書きました(^^;