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

執筆者:

関連記事

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

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

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

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

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

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

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

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

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

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

 

shingo.nakanishi
 

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