1

アプリケーションを、他の多くのものと共有しているsvnリポジトリから、独自の新しいリポジトリに移動しています。だから、レイアウトで新たなスタートを切るチャンスがあります。

アプリ自体には 2 つのコンポーネントがあります。データベースと通信するかなり標準的な Java Web アプリと、DB をポーリングし、検出内容に基づいて長時間実行される処理タスクを開始する Java のバックエンド コンポーネントです。基本的には DB です。キューとして使用されています。コードは 3 つのパッケージに分割されます。

  1. org.blah.common- Web アプリとバックエンドの間で共有される DAO などのコード
  2. org.blah.webapp- ウェブアプリ; これは に依存しorg.blah.common.warファイルにビルドされます。
  3. org.blah.backend- バックエンド プロセス。これは に依存しorg.blah.common、jar といくつかのスクリプトを含む tar ファイルにビルドされます。

また、Tomcat と Apache の構成の他のビットも svn に取りたいと思います。

現在、3 つのパッケージはすべてディレクトリの下の svn にsrcあり、さまざまな部分をビルドするさまざまなターゲットを持つ ant スクリプトがあります。svn:ignore プロパティが非常に大きくなり、あるディレクトリのスクリプトが下のパッケージのコードに関連しているのsrcに対し、別のディレクトリのスクリプトは tomcat の起動と停止用であることがすぐにはわかりません。

私はMaven の標準的なディレクトリ レイアウトに惹かれていますが、これまで使用したことがありません。私はこれを思いついた:

common/
    src/
        main/
            java/
            resources/
        test/
            java/
            resources/
    target/    # Not checked in
        common.jar
webapp/
    src/
        main/
            java/
            resources/
            webapp/
        test/
            java/
            resources/
    target/    # Not checked in
        webapp.war
backend/
    src/
        main/
            java/
            perl/
            resources/
        test/
            java/
            resources/
    target/    # Not checked in
        backend.tar
infra/
    tomcat/
        bin/
        conf/
    apache/
        bin/
        conf/
db/
    tables/
    procs/
    triggers/

現時点では、maven に移行するつもりはないことに注意してください。既存の ant スクリプトは機能するため、それらを適応させます。ただし、将来のある時点でmaven(またはmavenレイアウトを使用するbuildrのようなもの)に移行するオプションを保持したいと思います。

そう:

  • これは、リポジトリをレイアウトする合理的な方法のように思えますか? さらに先に私をつまずかせるものはありますか?
  • これは、アプリを初めて使用する人には明らかでしょうか?
  • これは Maven と互換性がありますか? (理論的には、どのレイアウトでも Maven を機能させることができることはわかっていますが、理由により標準を推奨していると思います。)
  • IDE でこれに問題が発生することはありますか? (私が使用しているコンピューターに応じて、intellij または eclipse を使用します。私のチームの他の人々 (これについて意見を持っていないのは有益です) は、netbeans を使用します。)
4

3 に答える 3

1
  • これは、リポジトリをレイアウトする合理的な方法のように思えますか? さらに先に私をつまずかせるものはありますか?

まあ、Maven はレイアウトを含む業界のベスト プラクティスをキャプチャするため、現在 Maven を使用していない場合でも、これは非常に良い選択のように思えます。実際、これは別のテクノロジから Maven に移行する場合に推奨される移行戦略です。まず、Maven レイアウトに移行し、既存のビルド スクリプトを更新してから、Maven を導入します。あなたの場合、すべてのプロジェクトが同じライフサイクルを持っている場合 (それらがすべて一緒にリリースされている場合)、Maven でこのように管理されない可能性があるインフラ プロジェクトを除いて、特にコメントはありませんが、現在は何もブロックされていません。

  • これは、アプリを初めて使用する人には明らかでしょうか?

正直なところ、問題があり、適応できない人がいる場合は、修正する必要があるのはその人かもしれません:)

  • これは Maven と互換性がありますか? (理論的には、どのレイアウトでも Maven を機能させることができることはわかっていますが、理由により標準を推奨していると思います。)

Maven とほぼ完全に互換性があるようです (前述のインフラ部分を除きますが、これは実際には問題ではありません)。はい、Maven の構成を変更してデフォルトの規則を使用する必要がなければ、明らかに簡単です。シームレスに移動するために、Ant ビルドと並行して Maven ビルドをセットアップできることに注意してください。

  • IDE でこれに問題が発生することはありますか? (私が使用しているコンピューターに応じて、intellij または eclipse を使用します。私のチームの他の人々 (これについて意見を持っていないので助かります) は、netbeans を使用します。)

Ant プロジェクトをこれらの IDE の 1 つにインポートしてから長い時間が経ちましたが、それらはすべてこのレイアウトを処理できるはずだと思います (Maven を使用する場合は 100% 確実です)。この質問に答える最善の方法は、もちろんいくつかのテストを行うことです:)

于 2009-12-22T18:10:45.770 に答える
0

src私が抱えている唯一の問題は、上記のレイアウトではなく、ディレクトリにソースコードが直接含まれていることを期待していることです。しかし、特にEclipse内では、それは私がすぐに克服できる考え方だと思います。

于 2009-12-22T14:01:12.423 に答える
0

ターゲットディレクトリがリポジトリにあるのはなぜですか? ビルド結果は簡単に再現できるので、チェックインしないのが好きです。簡単に再現できない場合は、バイナリをチェックインする代わりに解決すべき問題です。

それ以外は、このレイアウトに問題はありません。tomcat ディレクトリを除いて、標準の Maven レイアウトです。

于 2009-12-22T14:08:06.280 に答える