問題タブ [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.
maven - 親POMを介して構築するときにMavenが正しいプロファイルを使用していない
ビルド時にプロファイルを使用してアプリケーション プロパティを挿入する Maven プロジェクトがあります。挿入されるプロパティは、Maven にプロジェクトのビルドを依頼するときに使用する Maven 設定ファイルに保存されます。
私のビルド コマンドには 2 つの種類があります。
OPTION1をビルドしてからOPTION2をビルドしようとすると、問題が発生します。場合によっては、Maven が不要なプロファイルのプロパティを引き続き使用することがあります。さらに奇妙なのは、すべての子プロジェクトでこの問題が発生するわけではないということです。
ビルドコマンドでファイルを明示的に定義した場合でも、Maven が古いプロファイルを使用し続ける理由を誰かが提案できますか?
ありがとう
maven - Maven で継承されたプロファイル
親ポンに次のプロファイルがあります
P1 が子 POM でアクティブで、P2 がアクティブでないのはなぜですか?
ディレクトリ${project.basedir}/src/main/whatever
は、親プロジェクトには存在しませんが、子プロジェクトには存在します。
maven - Maven プロファイルのアクティブ化条件の os.family の値
Maven では、実行するオペレーティング システム ファミリに基づいて、特定のビルド プロファイルをアクティブにすることができます。たとえば、次のようになります。
これには多くの疑問があります: その場合に許容される値は何os.family
ですか? 大文字と小文字は区別されますか? Linuxは次のように出くわしUnix
ますか? それともunix
?等々。
許可された値に関する情報はどこにありますか? または少なくとも、Maven はこれらの値をどこから取得しますか? 環境変数?
java - Maven 3 プロファイル (およびそのアクティベーション ポリシー) を 1 か所で定義し、後で再利用することはできますか?
私のビルド プロセスは非常に複雑で、Windows で実行する場合と Linux で実行する場合にいくつかのアクションを実行する必要があり、それらのアクションをさまざまな POM に配置する必要があります。
OSに応じて特定のプロファイルを有効にできることを知っています。しかし、私が見つけたすべての例には、<profiles> ... </profiles>
タグ内でアクションを実行することが含まれており、それらのプロファイルのアクティブ化基準も含まれています。私が避けようとしているのは、次のような多くのセクションを宣言する必要があることです:
ポム 1:
次に、別のPOMのウィンドウで何かをする必要がある場合も同じです。何度も何度も...一部のプロファイルでは、アクティベーションがより広範囲になります。
アクティベーション ポリシーを 1 か所で定義してから、次のようにします。
アクティブなプロファイルに応じてプラグインを個別に構成するだけで、プラグイン宣言と、大量の POM ファイル内の各プロファイルのすべてを複製する必要がなくなります...
また、プロファイル A がアクティブな場合、複数の場所で設定するにはどうすればよいですか? 各POMでアクティベーションポリシーを使用してタグをもう一度宣言する必要がありますか、またはこの重複をすべて回避する方法はありますか?
ネット上で基本的な例以外のものを見つけるのがいかに難しいか、少し混乱して驚いています。
unit-testing - Maven でプロファイルを組み合わせて、単体テストの複数のカテゴリをスキップしますか?
複数のプロファイルに基づいて単体テストの一部のカテゴリを除外するように Maven を構成しようとすると問題が発生します。
単体テスト用に 2 つのカテゴリを定義しました。SlowTest
実行に非常に時間がかかる単体テストとWindowsTest
、Windows 環境内でのみ実行できる単体テストです。
pom.xml
プロジェクトのファイルで次のように定義された 2 つのプロファイルがあります。
たとえば、テストを実行して遅いテストを除外したい場合は、 を実行できmvn -PskipSlowTests test
ます。また、Windows テストをスキップしたい場合は、Windows 以外の OS で実行できます (またはコマンド ラインでmvn test
明示的に指定します)。-PskipWindowsTests
ここでの問題は、skipSlowTests
とskipWindowsTests
プロファイルの両方がアクティブ化されている場合、Windows テストのみがスキップされることです。遅いテストは引き続き実行されます。maven が有効なpom.xml
ファイルを作成するときに、skipSlowTests
プロファイルを適用しmaven-surefire-plugin
、グループを除外するように構成しますSlowTest.class
。次に、skipWindowsTests
プロファイルが適用され、除外されたグループが上書きされますWindowsTest.class
。
私が本当に望んでいるのは、SlowTest.class,WindowsTest.class
両方のプロファイルがアクティブになったときに除外されたグループになることですが、これを行う方法がわかりません。
プロパティに値を追加することをmavenで確認できる方法はありません。
pom.xml
プロパティに値を割り当てる際に再帰があるため、これは壊れていexcludedGroups
ます。
また、とのskipSlowTestsAndWindowsTests
両方がアクティブになっているときにアクティブになる 3 番目のプロファイル (例: )を設定する方法はありません。skipSlowTests
skipWindowsTests
ここに何か提案はありますか?個別のフェーズmaven-surefire-plugin
(低速テスト用、Windows テスト用、その他すべてのテスト用) を追加し、プロファイルを使用して実行するフェーズを決定する可能性がありますか?
編集#1
maven-surefire-plugin
次のように、個別の実行フェーズを作成してみました。
この構成では、3 つの個別の実行でテストが実行されます。default-test
実行では、低速テストと Windows テストを除くすべてのテストが実行されます。slow-test
実行では遅いテストのみが実行されます。windows-test
実行すると、Windows テストのみが実行されます。skipSlowTests
プロファイルとプロファイルの両方skipWindowsTests
が有効になっている場合、スロー テストと Windows テストの両方がスキップされます。
ここでの問題は、カテゴリSlowTest
とWindowsTest
カテゴリの両方でマークされたテストがある場合です。
skipSlowTests
プロファイルのみが有効になっている場合、実行windows-test
は引き続き実行されます。slowWindowsTestCase
メソッドは Windows テストとしてマークされているため、遅いテストをスキップしたい場合でも実行されます。skipWindowsTests
同様に、このテスト ケースは、プロファイルのみが有効な場合にも実行されます。このテスト ケースをスキップする唯一の方法は、skipSlowTests
とskipWindowsTests
プロファイルの両方を指定することです。
次のように実行を変更してみました。
しかし今、slowWindowsTestCase
メソッドは決して実行されません。
編集#2
また、テストを正しく実行できたとしても、依存関係を追加して、テスト中におよびインターフェイスをロードできるようmaven-surefire-plugin
にする必要があります。親 POMのセクションを挿入しましたが、このプラグインに対して定義された依存関係はスコープを持つことができません。その結果、およびインターフェイスを定義するモジュールの外部でテストを実行しても機能しません。プロファイルにプラグインのスコープ依存関係を追加できますが、アクティブなプロファイルがない場合はカバーされません。SlowTest
WindowsTest
maven-surefire-plugin
pluginManagement
test
SlowTest
WindowsTest
test
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 つだけが常にアクティブであることを確認してください。
また、システム プロパティを渡してプロファイルを明示的にアクティブ化するソリューションには興味がありません。これらのソリューションは、このあたりのワークロードに耐えられるほど堅牢ではないからです。
maven - Java (maven) プロジェクトでさまざまな依存関係のコンテキストを管理する
すべてのコードが非常にまとまりのあるアプリケーションを持っていますが、異なるクラス環境で実行されます。アプリケーションは、さまざまな API を使用して、さまざまな方法で同じことを行います。
したがって、ビルドのさまざまな部分をさまざまなクラスパスで実行したいと考えています。使用の長所/短所は何ですか
- Maven サブモジュール
対
- プロフィール
これを達成するには?
ビルドでは、すべてのコード パスの結果を最終テストに統合する必要があるため、このプロジェクトを完全に個別のソース コードベースに分離することはできません。
maven - 特定のpuginのみのMaven有効化プロファイル
特定のプラグイン/ゴールをビルドするときにのみ Maven プロファイルをアクティブにすることは可能ですか?
もしそうなら、~/.m2/settings.xml でこれをどのように設定しますか?
jakarta-ee - Maven プロファイルごとに異なる永続化ユニット
選択した Maven プロファイルに応じて、2 つの異なるデータベースを使用したいと考えています。「運用」プロファイルには MySQL データベースを使用し、「開発」プロファイルにはインメモリ HSQLDB を使用したいと考えています。
2 つの persistence.xml ファイルを持つことが可能であることがわかりました。1 つは「src/main/resources/META-INF」に保存され、もう 1 つは「src/test/resources/META-INF」に保存されます。これにより、テスト用に別のデータベースを選択できるようになります。
しかし、選択したMavenプロファイルに応じてデータベースの選択を行うことも可能ですか?