同僚にやってもらったことをブログに書く簡単なお仕事。
やりたいこと
warなプロジェクト(Webアプリケーション)を別のプロジェクトから使うため、WebアプリケーションなんだけどMavenでjarファイルを生成したい。
- example-web
- example-admin
のように2つのプロジェクトがあって、「example-webにあるクラスをexample-adminからも使いたい!」みたいな。
なお、使用するMavenは3.0.x以上を想定している。
pom.xml
pom.xml上では
<packaging>war</packaging>
のように通常のwarのプロジェクトとして定義するが、以下のmaven-jar-pluginをbuildpluginsに足すことで maven packageコマンドでwarファイルとともにjarファイルが生成されるようになる。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>make-a-jar</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<excludes>
<exclude>**/*.xml</exclude>
<exclude>**/*.properties</exclude>
<exclude>**/SampleController*</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
↑のようにconfigurationでjarパッケージング時に除外するファイルや逆にインクルードするファイルを指定することができる。
やってみよう。
$ mvn package ... $ ls -l target/war-jar-sample.* -rw-r--r-- 1 kazuhiro staff 3535 9 14 03:06 target/war-jar-sample.jar -rw-r--r-- 1 kazuhiro staff 3842928 9 14 03:06 target/war-jar-sample.war
ちゃんとjarファイルができている。
mvn installしたい
生成したjarファイルをローカルマシンのMavenリポジトリ(~/.m2/repository)に配置したい場合はmaven-install-pluginを追加する。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<file>${project.build.directory}/${project.artifactId}.jar</file>
</configuration>
</execution>
</executions>
</plugin>
やってみよう。
$ mvn install ... $ ls -l ~/.m2/repository/net/lampetty/war-jar-sample/1.0.0-SNAPSHOT total 7552 -rw-r--r-- 1 kazuhiro staff 234 9 14 03:09 _maven.repositories -rw-r--r-- 1 kazuhiro staff 876 9 14 03:09 maven-metadata-local.xml -rw-r--r-- 1 kazuhiro staff 3535 9 14 03:09 war-jar-sample-1.0.0-SNAPSHOT.jar -rw-r--r-- 1 kazuhiro staff 7045 9 14 03:06 war-jar-sample-1.0.0-SNAPSHOT.pom -rw-r--r-- 1 kazuhiro staff 3842926 9 14 03:09 war-jar-sample-1.0.0-SNAPSHOT.war```
ちゃんとjarファイルが ~/.m2/repository にできている。
mvn deployしたい
同様にリモートのMavenリポジトリにdeployしたい場合は以下のmaven-deploy-pluginプラグインを追加する。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<generatepom>true</generatepom>
<repositoryid>snapshots</repositoryid>
<url>${project.distributionManagement.snapshotRepository.url}</url>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<file>${project.build.directory}/${project.artifactId}.jar</file>
</configuration>
</execution>
</executions>
</plugin>
まとめ
最終的に出来上がったpom.xmlはhttps://github.com/oinume/war-jar-sample/ に上げてあるので、実際に試してみると良いでしょう。
Apache Maven 3クックブック Javaソフトウェア開発のための特選レシピ集
posted withamazlet
at 13.09.13
Srirangan
アスキー・メディアワークス
売り上げランキング: 134,948
アスキー・メディアワークス
売り上げランキング: 134,948
0 件のコメント:
コメントを投稿