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

執筆者:

関連記事

Javascript(暗号化JSライブラリ「Forge」)とp12ファイルで署名値を作成、Javaで検証する

前回、送信データの改ざんを検知する為、簡易的なセキュリティトークンであるPKCS#12形式のファイルを作成しました。 One IT Thing  10 Pockets開発用のPKCS#12フ …

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

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

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

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

Maven依存ライブラリのライセンスサマリを出す

Mavenで依存しているライブラリのライセンス累計を作成します。下記のように「ライセンス名 ライブラリ個数」の行がライセンス種別数分作られるイメージ。 BSD 4ASL2 43MIT 5 開発中のクロ …

JavaコアAPI数の遷移をChart.jsでグラフ化してみる

chart.jsの試用を兼ねてJavaバージョンが上がるごとに標準搭載されているAPI数がどう変化しているか調べました。 目次1 調査結果2 グラフ化3 不要なAPIは外部化の傾向 調査結果 Orac …

 

shingo.nakanishi
 

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