アプリケーションを、他の多くのものと共有しているsvnリポジトリから、独自の新しいリポジトリに移動しています。だから、レイアウトで新たなスタートを切るチャンスがあります。
アプリ自体には 2 つのコンポーネントがあります。データベースと通信するかなり標準的な Java Web アプリと、DB をポーリングし、検出内容に基づいて長時間実行される処理タスクを開始する Java のバックエンド コンポーネントです。基本的には DB です。キューとして使用されています。コードは 3 つのパッケージに分割されます。
org.blah.common
- Web アプリとバックエンドの間で共有される DAO などのコードorg.blah.webapp
- ウェブアプリ; これは に依存しorg.blah.common
、.war
ファイルにビルドされます。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 を使用します。)