3

通常の開発中に、実行する必要がある特定のビルド機能があります。リリース時に、そのビルド関数をリリースに相当するものに置き換える必要があります (この場合、コピーではなく Proguarding)。

私は、DevelopmentProfile が activeByDefault の 2 つのプロファイル、DevelopmentProfile と ReleaseProfile を使用してそこにたどり着くことができるかもしれないと考えました。

例えば

<profiles>
    <profile>
        <id>DevelopmentProfile</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <developmentBuild>true</developmentBuild>
            <releaseBuild>false</releaseBuild>
        </properties>
    </profile>
    <profile>
        <id>ReleaseProfile</id>
        <properties>
            <developmentBuild>false</developmentBuild>
            <releaseBuild>true</releaseBuild>
        </properties>
    </profile>
</profiles>

また、release-plugin releaseProfiles 属性を介して ReleaseProfile をオンにし、releaseProfiles 属性を介して ReleaseProfile をオフにします。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <releaseProfiles>ReleaseProfile,!DevelopmentProfile</releaseProfiles>
    </configuration>
</plugin>

これは、「プロファイルの非アクティブ化」http://maven.apache.org/guides/introduction/introduction-to-profiles.htmlに関するこの記事と、リリースプラグインのソースが単に文字列が提供されます。

しかし、うまくいかないようです。release-plugin がアクティブなプロファイルを先頭に追加し、おそらくプロファイルの非アクティブ化をオーバーライドするためだと思います。

いかなる場合でも。リリース中にプロファイルを無効にする別の方法はありますか? または、これら 2 つのプロファイルのうちの 1 つだけが常にアクティブであることを確認してください。

また、システム プロパティを渡してプロファイルを明示的にアクティブ化するソリューションには興味がありません。これらのソリューションは、このあたりのワークロードに耐えられるほど堅牢ではないからです。

4

1 に答える 1

1

OK、上で行ったことはすべて 100% 正しいです。上記で行ったように、リリース中にプロファイルを無効にすることは間違いなく可能です。

私にとってうまくいかなかった理由は、表示されている release-plugin 構成が子 pom で指定されていて、親 pom が releaseProfiles の値をオーバーロードしているか、完全に制御していたためです。

したがって、構成を親に移動すると、すべてが機能しました。

于 2014-01-15T15:04:40.580 に答える