Package structure for a Java project?

前端 未结 7 663
情歌与酒
情歌与酒 2020-12-02 04:01

Whats the best practice for setting up package structures in a Java Web Application?

How would you setup your src, unit test code, etc?

相关标签:
7条回答
  • 2020-12-02 04:32

    One another way is to separate out the APIs, services, and entities into different packages.

    0 讨论(0)
  • 2020-12-02 04:34

    I usually like to have the following:

    • bin (Binaries)
    • doc (Documents)
    • inf (Information)
    • lib (Libraries)
    • res (Resources)
    • src (Source)
    • tst (Test)

    These may be considered unconventional, but I find it to be a very nice way to organize things.

    0 讨论(0)
  • 2020-12-02 04:43

    I would suggest creating your package structure by feature, and not by the implementation layer. A good write up on this is Java practices: Package by feature, not layer

    0 讨论(0)
  • 2020-12-02 04:44
    The way I usually organise is
    - src
            - main
                    - java
                    - groovy
                    - resources
            - test
                    - java
                    - groovy
    - lib
    - build
            - test 
                    - reports
                    - classes
    - doc
    
    0 讨论(0)
  • 2020-12-02 04:47

    There are a few existing resources you might check:

    1. Properly Package Your Java Classes
    2. Spring 2.5 Architecture
    3. Java Tutorial - Naming a Package
    4. SUN Naming Conventions

    For what it's worth, my own personal guidelines that I tend to use are as follows:

    1. Start with reverse domain, e.g. "com.mycompany".
    2. Use product name, e.g. "myproduct". In some cases I tend to have common packages that do not belong to a particular product. These would end up categorized according to the functionality of these common classes, e.g. "io", "util", "ui", etc.
    3. After this it becomes more free-form. Usually I group according to project, area of functionality, deployment, etc. For example I might have "project1", "project2", "ui", "client", etc.

    A couple of other points:

    1. It's quite common in projects I've worked on for package names to flow from the design documentation. Usually products are separated into areas of functionality or purpose already.
    2. Don't stress too much about pushing common functionality into higher packages right away. Wait for there to be a need across projects, products, etc., and then refactor.
    3. Watch inter-package dependencies. They're not all bad, but it can signify tight coupling between what might be separate units. There are tools that can help you keep track of this.
    0 讨论(0)
  • 2020-12-02 04:47

    The way i usually have my hierarchy of folder-

    • Project Name
      • src
      • bin
      • tests
      • libs
      • docs
    0 讨论(0)
提交回复
热议问题