1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Mavenでwarファイルを作成する直前に別のライブラリを含めたい

Last updated at Posted at 2018-07-20

色々訳あってMavenリポジトリで管理されていないライブラリがありました。

        <dependency>
            <groupId>fukasawah</groupId>
            <artifactId>XXXXXX</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/XXXXXX.jar</systemPath>
        </dependency>

このjarをwarに含めたい。

今回はそれが出来る方法を2つご紹介。

maven-dependency-pluginを使うやり方

デフォルトではsystemスコープの依存関係はwarに含まれないようです。
しかし、warファイルを作る作業の中に、特定のディレクトリにあるものをzipにする作業をします。
なので、zipにする直前にmaven-dependency-pluginでコピーする作業を入れるとよいです。

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>prepare-package</phase><!-- ここ大事 -->
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
                            <includeArtifactIds>XXXXXX</includeArtifactIds>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

prepare-packageが大事で、packageではwarファイル作成後にファイルがコピーされてしまい、warに含まれてない状態になる。

また、この時、${artifactId}-${version}.jarという形式で配置される。

maven-war-pluginを使うやり方

Mavenの依存関係の恩恵がなくなりますが、書き方は一番素直な感じがする。

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>lib</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                            <includes>
                                <include>XXXXXX.jar</include>
                                <!-- <include>**/*.jar</include> --><!-- ワイルドカードも使える -->
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

こっちは単純なファイルコピーなので、artifactIdも関係ないし、versionは含まれない。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?