問題タブ [maven-profiles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
206 参照

maven - 親POMを介して構築するときにMavenが正しいプロファイルを使用していない

ビルド時にプロファイルを使用してアプリケーション プロパティを挿入する Maven プロジェクトがあります。挿入されるプロパティは、Maven にプロジェクトのビルドを依頼するときに使用する Maven 設定ファイルに保存されます。

私のビルド コマンドには 2 つの種類があります。

OPTION1をビルドしてからOPTION2をビルドしようとすると、問題が発生します。場合によっては、Maven が不要なプロファイルのプロパティを引き続き使用することがあります。さらに奇妙なのは、すべての子プロジェクトでこの問題が発生するわけではないということです。

ビルドコマンドでファイルを明示的に定義した場合でも、Maven が古いプロファイルを使用し続ける理由を誰かが提案できますか?

ありがとう

0 投票する
5 に答える
29308 参照

maven - Maven で継承されたプロファイル

親ポンに次のプロファイルがあります

P1 が子 POM でアクティブで、P2 がアクティブでないのはなぜですか?

ディレクトリ${project.basedir}/src/main/whateverは、親プロジェクトには存在しませんが、子プロジェクトには存在します。

0 投票する
4 に答える
22496 参照

maven - Maven プロファイルのアクティブ化条件の os.family の値

Maven では、実行するオペレーティング システム ファミリに基づいて、特定のビルド プロファイルをアクティブにすることができます。たとえば、次のようになります。

これには多くの疑問があります: その場合に許容される値は何os.familyですか? 大文字と小文字は区別されますか? Linuxは次のように出くわしUnixますか? それともunix?等々。

許可された値に関する情報はどこにありますか? または少なくとも、Maven はこれらの値をどこから取得しますか? 環境変数?

0 投票する
1 に答える
207 参照

java - Maven 3 プロファイル (およびそのアクティベーション ポリシー) を 1 か所で定義し、後で再利用することはできますか?

私のビルド プロセスは非常に複雑で、Windows で実行する場合と Linux で実行する場合にいくつかのアクションを実行する必要があり、それらのアクションをさまざまな POM に配置する必要があります。

OSに応じて特定のプロファイルを有効にできることを知っています。しかし、私が見つけたすべての例には、<profiles> ... </profiles>タグ内でアクションを実行することが含まれており、それらのプロファイルのアクティブ化基準も含まれています。私が避けようとしているのは、次のような多くのセクションを宣言する必要があることです:

ポム 1:

次に、別のPOMのウィンドウで何かをする必要がある場合も同じです。何度も何度も...一部のプロファイルでは、アクティベーションがより広範囲になります。

アクティベーション ポリシーを 1 か所で定義してから、次のようにします。

アクティブなプロファイルに応じてプラグインを個別に構成するだけで、プラグイン宣言と、大量の POM ファイル内の各プロファイルのすべてを複製する必要がなくなります...

また、プロファイル A がアクティブな場合、複数の場所で設定するにはどうすればよいですか? 各POMでアクティベーションポリシーを使用してタグをもう一度宣言する必要がありますか、またはこの重複をすべて回避する方法はありますか?

ネット上で基本的な例以外のものを見つけるのがいかに難しいか、少し混乱して驚いています。

0 投票する
2 に答える
8007 参照

unit-testing - Maven でプロファイルを組み合わせて、単体テストの複数のカテゴリをスキップしますか?

複数のプロファイルに基づいて単体テストの一部のカテゴリを除外するように Maven を構成しようとすると問題が発生します。

単体テスト用に 2 つのカテゴリを定義しました。SlowTest実行に非常に時間がかかる単体テストとWindowsTest、Windows 環境内でのみ実行できる単体テストです。

pom.xmlプロジェクトのファイルで次のように定義された 2 つのプロファイルがあります。

たとえば、テストを実行して遅いテストを除外したい場合は、 を実行できmvn -PskipSlowTests testます。また、Windows テストをスキップしたい場合は、Windows 以外の OS で実行できます (またはコマンド ラインでmvn test明示的に指定します)。-PskipWindowsTests

ここでの問題は、skipSlowTestsskipWindowsTestsプロファイルの両方がアクティブ化されている場合、Windows テストのみがスキップされることです。遅いテストは引き続き実行されます。maven が有効なpom.xmlファイルを作成するときに、skipSlowTestsプロファイルを適用しmaven-surefire-plugin、グループを除外するように構成しますSlowTest.class。次に、skipWindowsTestsプロファイルが適用され、除外されたグループが上書きされますWindowsTest.class

私が本当に望んでいるのは、SlowTest.class,WindowsTest.class両方のプロファイルがアクティブになったときに除外されたグループになることですが、これを行う方法がわかりません。

プロパティに値を追加することをmavenで確認できる方法はありません。

pom.xmlプロパティに値を割り当てる際に再帰があるため、これは壊れていexcludedGroupsます。

また、とのskipSlowTestsAndWindowsTests両方がアクティブになっているときにアクティブになる 3 番目のプロファイル (例: )を設定する方法はありません。skipSlowTestsskipWindowsTests

ここに何か提案はありますか?個別のフェーズmaven-surefire-plugin(低速テスト用、Windows テスト用、その他すべてのテスト用) を追加し、プロファイルを使用して実行するフェーズを決定する可能性がありますか?

編集#1

maven-surefire-plugin次のように、個別の実行フェーズを作成してみました。

この構成では、3 つの個別の実行でテストが実行されます。default-test実行では、低速テストと Windows テストを除くすべてのテストが実行されます。slow-test実行では遅いテストのみが実行されます。windows-test実行すると、Windows テストのみが実行されます。skipSlowTestsプロファイルとプロファイルの両方skipWindowsTestsが有効になっている場合、スロー テストと Windows テストの両方がスキップされます。

ここでの問題は、カテゴリSlowTestWindowsTestカテゴリの両方でマークされたテストがある場合です。

skipSlowTestsプロファイルのみが有効になっている場合、実行windows-testは引き続き実行されます。slowWindowsTestCaseメソッドは Windows テストとしてマークされているため、遅いテストをスキップしたい場合でも実行されます。skipWindowsTests同様に、このテスト ケースは、プロファイルのみが有効な場合にも実行されます。このテスト ケースをスキップする唯一の方法は、skipSlowTestsskipWindowsTestsプロファイルの両方を指定することです。

次のように実行を変更してみました。

しかし今、slowWindowsTestCaseメソッドは決して実行されません。

編集#2

また、テストを正しく実行できたとしても、依存関係を追加して、テスト中におよびインターフェイスをロードできるようmaven-surefire-pluginにする必要があります。親 POMのセクションを挿入しましたが、このプラグインに対して定義された依存関係はスコープを持つことができません。その結果、およびインターフェイスを定義するモジュールの外部でテストを実行しても機能しません。プロファイルにプラグインのスコープ依存関係を追加できますが、アクティブなプロファイルがない場合はカバーされません。SlowTestWindowsTestmaven-surefire-pluginpluginManagementtestSlowTestWindowsTesttest

0 投票する
1 に答える
426 参照

maven-3 - maven-release-plugin の目標の実行中にプロファイルをオフにするにはどうすればよいですか

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

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

例えば

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

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

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

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

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

0 投票する
1 に答える
21 参照

maven - Java (maven) プロジェクトでさまざまな依存関係のコンテキストを管理する

すべてのコードが非常にまとまりのあるアプリケーションを持っていますが、異なるクラス環境で実行されます。アプリケーションは、さまざまな API を使用して、さまざまな方法で同じことを行います。

したがって、ビルドのさまざまな部分をさまざまなクラスパスで実行したいと考えています。使用の長所/短所は何ですか

  • Maven サブモジュール

  • プロフィール

これを達成するには?

ビルドでは、すべてのコード パスの結果を最終テストに統合する必要があるため、このプロジェクトを完全に個別のソース コードベースに分離することはできません。

0 投票する
1 に答える
31 参照

maven - 特定のpuginのみのMaven有効化プロファイル

特定のプラグイン/ゴールをビルドするときにのみ Maven プロファイルをアクティブにすることは可能ですか?

もしそうなら、~/.m2/settings.xml でこれをどのように設定しますか?

0 投票する
1 に答える
3165 参照

jakarta-ee - Maven プロファイルごとに異なる永続化ユニット

選択した Maven プロファイルに応じて、2 つの異なるデータベースを使用したいと考えています。「運用」プロファイルには MySQL データベースを使用し、「開発」プロファイルにはインメモリ HSQLDB を使用したいと考えています。

2 つの persistence.xml ファイルを持つことが可能であることがわかりました。1 つは「src/main/resources/META-INF」に保存され、もう 1 つは「src/test/resources/META-INF」に保存されます。これにより、テスト用に別のデータベースを選択できるようになります。

しかし、選択したMavenプロファイルに応じてデータベースの選択を行うことも可能ですか?