web-dev-qa-db-ja.com

Javaプロジェクトのパッケージ構造?

Java Webアプリケーションでパッケージ構造を設定するためのベストプラクティスは何ですか?

Src、ユニットテストコードなどをどのように設定しますか?

102
mawaldne

Mavenの 標準プロジェクトレイアウト に従うことができます。実際にMavenを使用する必要はありませんが、将来(必要に応じて)移行が容易になります。さらに、多くのオープンソースプロジェクトがこのようにレイアウトされているため、他の開発者はそのレイアウトを見ることに慣れています。

79
johnstok

確認できる既存のリソースがいくつかあります。

  1. Javaクラスを適切にパッケージ化する
  2. Spring 2.5アーキテクチャ
  3. Javaチュートリアル-パッケージの命名
  4. Sun Naming Conventions

価値のあるものとして、私が使用する傾向がある個人的なガイドラインは次のとおりです。

  1. 逆ドメインから始めます。 「com.mycompany」。
  2. 製品名を使用します(例: 「myproduct」。場合によっては、特定の製品に属さない一般的なパッケージを使用する傾向があります。これらは、これらの一般的なクラスの機能に従って分類されます。 「io」、「util」、「ui」など.
  3. この後、より自由形式になります。通常、プロジェクト、機能領域、展開などに基づいてグループ化します。たとえば、「project1」、「project2」、「ui」、「client」などがあります。

他のいくつかのポイント:

  1. パッケージ名が設計ドキュメントから流れるように取り組んだプロジェクトでは非常に一般的です。通常、製品は機能または目的の領域に既に分割されています。
  2. 一般的な機能をすぐに上位のパッケージにプッシュすることについて、あまり強調しすぎないでください。プロジェクト、製品などにまたがる必要があるのを待ってから、リファクタリングします。
  3. パッケージ間の依存関係を監視します。それらはすべて悪いわけではありませんが、別々のユニットである可能性のあるものの間の密結合を意味します。これを追跡するのに役立つツールがあります。
54
lycono

実装層ではなく機能ごとにパッケージ構造を作成することをお勧めします。これについての良い記事は Javaのプラクティス:レイヤーではなく機能ごとのパッケージ です。

40
dataAnalyst

私は通常、次のものが欲しいです:

  • bin(バイナリ)
  • doc(ドキュメント)
  • inf(情報)
  • lib(ライブラリ)
  • res(リソース)
  • src(ソース)
  • tst(テスト)

これらは型破りなものと考えられるかもしれませんが、物事を整理するための非常に良い方法であると思います。

3
user5425586
The way I usually organise is
- src
        - main
                - Java
                - groovy
                - resources
        - test
                - Java
                - groovy
- lib
- build
        - test 
                - reports
                - classes
- doc
1
Raj

私が通常フォルダの階層を持っている方法-

  • プロジェクト名
    • src
    • 置き場
    • テスト
    • ライブラリ
    • docs
1
pdeva