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

執筆者:

関連記事

IVS、サロゲートペアが混じった文字列をJavaのWebアプリでワードカウントする

(結論:java.text.BreakIteratorは「サロゲートペア文字 + IVS」の8バイト文字も1文字としてカウントしてくれる) 先日、IPAmj明朝フォントを使ってIVSを含んだUnico …

JUnitコードの自動生成も出来る古の神Eclipseプラグイン「CodeProAnalytix」は今でも使える

デスマーチPM「各社のPG進捗が遅れていてユニットテストを書く暇が全く無いんですよ、なにかいい手は有りませんかね・・・? 因みに本プロジェクトはカバレッジ100%で請け負っています!(キリッ)」 何故 …

SpringBootアプリにBootstrap4を追加(WebJars使用)

SpringBootにCSSやJSを追加する場合は概ね以下のパターンがあるんじゃないかと思います。(bowerはもう使わない方向で) CDNで外部から読み込む<script src=&#8221 …

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

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

Spring&JSPの検証環境を作る

2019年現在、オワコン風潮の強いJSPですが使っているプロジェクトもまだまだあり、枯れた技術を好む官公庁系のプロジェクトでは根強いシェアを誇っています。実装検証をする為に環境を作る機会があったりする …

 

shingo.nakanishi
 

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