правильное место в исходном дереве Java для вспомогательных данных? - PullRequest
1 голос
/ 07 июня 2011

Я понимаю базовую структуру дерева исходного кода jav и файла jar:

com
  example
    mypackage
      myclass1.java
      myclass2.java

Но если у меня есть растровые изображения или html-файлы, существуют ли соглашения о том, где их следует размещать?

Раньше я добавлял каталог ui в корень дерева исходного кода (например, каталог одного уровня из каталога com выше).Но это кажется «подлым»: технически может быть пакет «ui».

Ответы [ 3 ]

3 голосов
/ 07 июня 2011

Я предпочитаю подход Maven с каталогом ресурсов, который отделен от исходных файлов Java:

my-app
|-- pom.xml
`-- src
    |-- main
    | `--- resources <-- Resources go here (sibling directory of java)
    |   `-- java
    |       `-- com
    |           `-- mycompany
    |               `-- app
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java

Если вы хотите использовать более корпоративный подход, используйте "Соглашения проекта"для корпоративных приложений ", разработанная Sun довольно давно.AFAIK, только IDE Netbeans реализует это до некоторой (или всей) степени.

Во время выполнения все ресурсы должны находиться в каталоге META-INF.Могут быть подкаталоги, но я думаю, что в этой области достаточно согласия, в отличие от организации исходного кода.

0 голосов
/ 07 июня 2011

Если вы используете Maven, он поощряет / заставляет вас использовать хорошо принятую структуру проекта (один модуль WAR):

.
├── pom.xml
└── src
    └── main
    ├── java
    │   └── com
    │       └── example
    │           └── Test.java
    ├── resources
    │   └── com
    │       └── example
    │           └── data.csv
    └── webapp
        ├── public.png
        └── WEB-INF
            ├── hidden.jsp
            └── web.xml

Несколько подсказок: размещение data.csv в том же каталоге, что и Test.javaПакет позволяет вам легко открыть этот файл внутри Test.java (и поддерживать все в порядке, поскольку файлы данных находятся в нескольких каталогах):

getClass().getResource("data.csv");  //will only work in com.example package

Maven автоматически поместит /src/main/resources содержимое в ваш CLASSPATH.Подкаталог /webapp используется только для файлов WAR.

0 голосов
/ 07 июня 2011

Я не знаю каких-либо соглашений.лично я помещаю все свои вещи в каталог data /.

, даже если существует пакет с таким именем, очень малы шансы, что существует файл, конфликтующий с файлами классов.

...