2011-07-12 12 views
2

My Mavenプロジェクトには、さまざまな設定が含まれているdev、stage、prodという3つのプロファイルが含まれています。アクティブなプロファイルがプロダクトでない場合は、インストールおよびデプロイメントフェーズを実行できない(または実行するが、何もしない)ようにしたい。デポを保持し、リポジトリからステージをビルドする。これを行う方法はありますか?Mavenを無効にするには、プロファイルを使用してフェーズをインストールして展開しますか?

私は、プラグイン>をdevとstageプロファイルに追加し、それを手動で「なし」のフェーズなどにバインドすることを想定しています。

答えて

0

は何を行う可能性がprofileプロパティがあなたの「PROD」プロファイルの値に設定されていることを検証するためにMaven Enforcer Pluginを使用している、最高のアイデアです。プラグインはデフォルトでvalidateフェーズにバインドされるため、packageフェーズにバインドするか、「prod」プロファイルのみを使用できます。

私はこのために使用する特定のレシピ:

あなたはプロパティとその値にアサーションを作るために使用することができますrequirePropertyと呼ばれる組み込みのルールがあります。 prodプロファイルからプロパティを設定してから、(プロファイル外の)enforcerプラグインを設定して、上記のプロパティが期待どおりの値に設定されていることを確認することができます。しかし、これはホキです。

環境固有の設定値をプロパティプレースホルダに外部化し、環境固有の設定ファイルを切り替えたり、生成しているアーティファクトの内容に影響を与えるのではなく、これらの値を設定するためにのみプロファイルを使用することを強くお勧めします。

+0

実際には、プロファイルを使用してプレースホルダを設定します。各プロファイルは$ env変数を定義します。次に、親のPOMにフィルタ$ {env} .propertiesを参照してフィルタを設定しました。したがって、すべての構成情報は、環境ごとに1つのファイルに集中管理されます。これで誰かがmvn -Pdevデプロイメントをやめてしまうわけではなく、私が解決しようとしているdev-configured成果物を使ってレポを汚染してしまいます。 – Jason

+0

あなたのenv変数で私の提案を使用できますか? –

+0

うん、私はできると思います。長期的には、私はこれを達成するためにあまりにも少年気の方法を取り除く必要があることに同意しますが、これはスプリントを通して私を得るでしょう。ありがとう! – Jason

1

本当にやりたいことがあれば、devとstagingの "package"フェーズを実行して、提供されたユーザはリポジトリへの書き込み権限を持たないようにしてください。

私がやってお勧めしたいのは、コンフィギュレーションファイルをビルドアーティファクトの外に置いて、環境間で昇格されるビルドを1つだけ持つことです。ビルドを展開するためのスクリプトの一部として、正しい設定を自動的にコピーして同様の効果を得ることができます。関係なく、あなたがこれをしたいかどうか

関連する問題