mavenで外部ライブラリを再パッケージする

nbeppu 440views 更新:2014年8月14日

Java のライブラリを JAR でパッケージングする際に、ライブラリを利用する環境の依存関係と衝突してしまうという問題がおきることがあります。バージョンが異なると利用できるメソッドや挙動が変わってしまう可能性もあります。

この問題を回避するために maven でパッケージングする際に、以下のように pom.xml を設定すると、依存関係のライブラリを独自のパッケージに差し替えてライブラリ化してくれます。

<project>
...
<build>
<plugins>
...
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.4</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <relocations>
                    <relocation>
                        <pattern>com.amazonaws</pattern>
                        <shadedPattern>com.amazonaws.repackaged</shadedPattern>
                    </relocation>
                    <relocation>
                        <pattern>org.apache</pattern>
                        <shadedPattern>org.apache.repackaged</shadedPattern>
                    </relocation>
                </relocations>
            </configuration>
        </execution>
    </executions>
</plugin>
...
</plugins>
</build>
...
</project>

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません