One IT Thing

IT業界で飯を食う為の学習系雑記

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

執筆者:

関連記事

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

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

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

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

IPAmj明朝のttfファイルをJVMに読み込ませてSwingで表示(要Java11)

目次1 はじめに2 Java11でSwingがIVSを認識するようになった3 Java Swingソース4 動作確認4.1 Java 8(1.8.0_202)で実行4.2 Java 11(11.0.2 …

IVS対応フォント「IPAmj明朝」で使えるフォントをWeb上に一覧表示してみる(3)

前回の続きです。 One IT ThingIVS対応フォント「IPAmj明朝」で使えるフォントをWeb上に一覧表示してみる(2)https://one-it-thing.com/2111前回 …

StripeとJavaで単発Web決済を一通り流してみる

会社仕事でも個人ビジネスでも、商品やサービスの対価として利用者に課金方法を提供したい時があるかと思います。 最もメジャーな決済方法であるクレジットカードで課金してもらう仕組みを導入したいところですが、 …

 

shingo.nakanishi
 

東京在勤、職歴20年越え中年ITエンジニアです。まだ開発現場で頑張っています。

19歳(1996年)から書き始めた個人日記が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。

私と同じく、今後IT業界で生計を立てて行きたいと考えている方や、技術共有したいけどフリーランスで孤独、といった方と一緒に成長、知識共有して行けたら楽しいな、と思っています。