同僚にやってもらったことをブログに書く簡単なお仕事。
やりたいこと
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 件のコメント:
コメントを投稿