java maven

Maven環境別ビルド時、プロファイルの違いでdependencyを変える

投稿日:2019年5月14日

MavenのResourceFilteringを使い、production、staging、developmentとかで環境別ビルドしている時、ある環境ビルドの時だけ特定のライブラリを追加する、をmvnビルド時に自動化出来るようにします。

環境

  • java8
  • maven3

実現方法

profileの中にdependenciesを入れ子に出来ます。
このスコープで登録されたdependencyは他の環境ビルドに影響しません。

    <profiles>
        <profile>
            <id>development</id>
                :
                
        </profile>
        
        <profile>
            <id>staging</id>
            <properties>
                <jdbc.url>jdbc:postgresql://192.168.122.69:9999/hoge</jdbc.url>
                <jdbc.username>hoge</jdbc.username>
                <jdbc.password>hoge</jdbc.password>
                         :
                <proxy.use>true</proxy.use>
                <proxy.host>10.83.182.192</proxy.host>
                <proxy.port>8081</proxy.port>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>org.javolution</groupId>
                    <artifactId>javolution</artifactId>
                    <version>5.3.1</version>
                </dependency>
            </dependencies>
        </profile>
                :

まとめ

開発期間が並走する、違うチームの開発jarと結合する場合、developmentではローカル作成したモックを使い、stagingでは開発された正式バージョンを使う。といった開発ルールにも適用出来ますね。

<profiles>
    <profile>
        <id>development</id>
        <dependencies>
            <dependency>
                <groupId>jp.co.awesomeapp</groupId>
                <artifactId>aaa_dev</artifactId>
                <version>1.0-SNAPSHOT</version>
                <type>jar</type>
            </dependency>
        </dependencies>
        <build>
            <finalName>awesomeapp_dev</finalName>
        </build>
    </profile>
    <profile>
        <id>staging</id>
        <dependencies>
            <dependency>
                <groupId>jp.co.awesomeapp</groupId>
                <artifactId>aaa</artifactId>
                <version>1.0</version>
                <type>jar</type>
            </dependency>
        </dependencies>
        <build>
            <finalName>awsomeapp</finalName>
        </build>
    </profile>
</profiles>

-java, maven

執筆者:

関連記事

Stripe + Javaでオーソリ(与信の確保)を実装する

Stripeでチャリンチャリン、サービスを開発するエンジニアにとっては夢がありますよね。 例え自分で個人的に売るものが無かったとしても、Web決済システムを構築できるノウハウを持っておけば、公的な仕事 …

H2 Databaseで生成したSHA256値をJavaで生成したSHA256値と比較してみる

ファイル、サーバ、メモリ、様々な動作形態がとれてプロトタイピングや、配布アプリの組み込みDBとして便利に使えるPure Javaデータベースの「H2」。 h2database.com  2 …

Jerseyで開発したRESTで任意リファラからのCORSアクセスを許可する

package jp.hoge.filter; import java.util.Properties; import javax.servlet.http.HttpServletRequest; i …

Stripe+Java+Payment Request APIでApple Pay、Google Payを使ったテストWeb決済をしてみる

自分で作ったサービスを運用してチャリンチャリンしたい・・・エンジニアならこんな夢、一度は見たことがあるんじゃないでしょうか。 夢を実現する為、以前Stripeのcheckout.jsを使ったテストWe …

JavaとPerlでUDPソケット通信

目次1 はじめに2 対象読者3 実装3.1 UDPサーバ(Perl)3.2 UDPクライアント(Java)3.3 実行4 まとめ はじめに 本棚を整理していたらラクダ本が出てきました。うわー懐かしい、 …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯技術者として楽しく生きることを目指しています。デスマに負けず健康第一。