springboot マルチモジュールおよびマルチ環境デプロイメントで、relativePath タグによる選択環境のパッケージ化が失敗し、デフォルト環境が常にパッケージ化される

1. **問題の原因:
idea ツールを使用して springboot マルチモジュール プロジェクトを作成する場合、new-project

 

 

 


次に、作成されたプロジェクトの pom <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <にこのような構成があります。relativePath/> <!-- リポジトリから親を検索 -->
    </parent>
    サブモジュールの場合、この段落は親プロジェクトの POM を継承するように変更する必要があります。
    親プロジェクトの場合は、この構成を保持し
    、親プロジェクトで複数のプロファイルを構成します
    <profiles>
        <profile>
            <!-- ローカル開発環境 -->
            <id>dev</id>
            <properties>
                <!--ここのタグ名は、リソースでスプライシングされます -->
                <activatedProperties>dev</activatedProperties>


            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <!-- 测试环境 -->
            <id>test</id>
            <properties>
                <activatedProperties>test</activatedProperties>
            </properties>
        </profile>
        <profile>
            <!-- 生産環境 -->
            <id>prod</id>
            <properties>
                <activatedProperties>prod</activatedProperties>
            </properties>
        </プロファイル>
    </プロファイル>

2. その後、新しい環境が追加されたため、次のように新しいプロファイルが親 POM に追加されました。 <profiles>
<profile>
        <
            !-- ローカル開発環境 -->
            <id>dev</id>
            < properties>
                <!- - ここでのタグ名はリソースとスプライシングされます -->
                <activatedProperties>dev</activatedProperties>
            </properties>
            <!-- これはデフォルトのオプションとして設定されています -->
            <activation>
                < activeByDefault>true</activeByDefault> </activeByDefault>
            </アクティブ化>
        </profile>
        <profile>
            <!-- テスト環境-->
            <id>test</id>
            <プロパティ>
                <activatedProperties>test</activatedProperties>
            </properties>
        </profile>
        <profile>
            <!-- テスト環境--> /** 新しく追加された環境設定ファイル名
            <id>test-hz</id>
            <properties>
                <activatedProperties>test-hz</ /** activateProperties>
            </properties>
        </profile>

        <profile>
            <!-- 本番環境-->
            <id>prod</id>
            <properties>
                <activatedProperties>prod</activatedProperties>
            </properties>
        </profile>
    < /プロファイル>
    次に、プロジェクトをテスト環境にデプロイし、新しく追加された構成ファイル test-hz を選択し、
    パッケージ ステートメント mvn clean package -P test-hz を使用して
    、レポートをパッケージ化します。
    The requested profile "test-hz" could not be activate because it does not exist.
    新しく追加されたプロファイルが見つかりませんが、環境が POM に追加され、構成ファイルも存在します。
    3. 上記の問題の理由は、親 POM の relativePath ラベルが原因です。
    このタグが記述されていない場合、プロジェクト パス内の親 POM がデフォルトで jar 依存関係のベースとして使用されます。しかし、空のタグを書いた場合、空のタグ <relativePath/> <!-- リポジトリから親を検索 --> を書いただけで、maven は常にパッケージング時にリモート ウェアハウスから POM を取得し、リモート ウェアハウスでは、私はtest-hz のプロファイルを追加していないため、test-hz の環境構成を見つけることができませんでした。代わりに、構成のデフォルト環境として dev が使用されます
   4. 解決策は、親 POM の relativePath タグを削除することです。

おすすめ

転載: blog.csdn.net/weixin_48363639/article/details/127451134