2012-01-09 9 views
2

開発者がより簡単に簡単に行えるように、私たちの環境に合わせてカスタマイズされたプロジェクトを生成するMaven Archetypeを実装しました。 Archetypeはうまく動作しますが、1つの重要なポイントでセットアップを完了できません。生成されたプロジェクトにはMercurialリポジトリがありません。Maven ArchetypeからMercurialリポジトリを初期化する

私はhg initをArchetypeから実行する方法はありますか?

このリクエストの主な理由は、新製品の作成および設定時に開発者が踏まなければならないステップ数を減らしたいということです。 5つ以上のモジュールを作成する必要があり、それぞれ独自のチェックインが必要です。これらのモジュールは、EARバンドルにグループ化されることは意図されていません。

答えは「いいえ、解決策はありません」としても問題ありません。これは、自動化によってゼロから運用時間を最適化することです。 Mavenのメカニズムを使用して自動化できない場合は、準標準のソリューションを見つけるよりも、むしろソリューションを実装しないでください。

私が考えている解決策の1つは、ANTプラグインを使用してhgをコマンドラインから呼び出すことです。私がこの解決策について気に入らない部分は、そのパスでMercurial実行可能ファイルを利用できるユーザーに依存していることです。それは障害の原因となる可能性のある依存性です。このような障害点は、意図したとおりに初期設定を簡素化するのではなく、複雑になります。 (エルゴ、なぜ解決策はありませんか?)

これまでのご意見ありがとうございました!

+0

パスに実行可能ファイルがない場合、どのようにコミットできますか?私は彼らがこの依存関係をどのように持つことができないのか、それがどのように問題になるのか分かりません。 –

+0

これは良い質問です。私が求めているものは実現可能なものなのでしょうか? Mavenは内部的に必要なタスクを管理できますか?または、すべてのソリューション(Maven SCMなど)は、インストールされている外部実行ファイルに依存していますか?グラフィカルツールをインストールするユーザーは、PATHに必要なツールを持たずにツールを使用してMercurial操作を実行できます。 – 64BitBob

答えて

1

hg initを必要とするその他のMavenプラグインを作成してみませんか?このような基本的なMavenプラグインを書くのはそれほど難しいことではありません。

個人的に私はget the source for the scm pluginとなり、initという目標をプラグインに追加します。それはそれを行う最もクリーンな方法でしょう。

scmプラグインでのinitのゴールを持っていないというのは、私の意見では目立った欠点のようです。変更を送信すると、メインコードに戻すことさえできます。

+0

それは悪い考えではありません。私が必要とするものを達成するためのプラグインがないことが判明した場合、多分私はそのルートに行くでしょう。ありがとう! – 64BitBob

0

いいえ、わかりました。 hg initを手動で作成した後で実行するのは大したことですか?あるいは、手動で呼び出されるアーキタイプにスクリプトを置くことはどうでしょうか?これは変更を行いませんが、デフォルト動作を定義できます。

+0

それだけでは、ステップはそれほど難しくありません。しかし、開発者は、これらのアーキタイプから約5つのモジュールを作成して、新しい製品を稼働させる必要があります。 (モジュール間では責任が分かれています。)これらのステップの性質上、可能な限り少ないステップを減らそうとしています。より多くの自動化は常に良いことです。 ANTスクリプトを使用してコマンドラインを呼び出しました。しかし、私はMavenでこのような頑丈なソリューションを使用することは嫌いです。私は(おそらく希望に反して)プラグインの方がいいと思っていたのだろうか? – 64BitBob

+0

マルチモジュール構造を作成して呼び出し回数を減らすことをお勧めしますか? – khmarbaise

+0

私たちのプラクティス(私はかなり標準的であると理解しています)はモジュールごとに1つのMavenレポを持っていました。したがって、あなたの提案は、Mercurialリポジトリの数ではなく、アーキタイプの数を減らすだけです。 – 64BitBob

0

hg initを使用して各開発者が水銀リポジトリを作成したいのはなぜですか?必要なのは、各開発者が中央のhgリポジトリをクローンとして開始できるようにすることです。これはscm:bootstrapまたはscm:checkoutのようなmaven scm pluginの目標を使用して行うことができます。

+0

この場合、Archetypeはプロジェクトの最初のインスタンスを生成するために使用されます。したがって、このアーキタイプが実行されているときに中央チェックインはありません。したがって、中央サーバにプッシュできる初期リポジトリを作成することが望まれます。 – 64BitBob

関連する問題