Какова структура каталогов проекта для автономного приложения Java SE?

Какова стандартная структура каталогов проекта для автономного приложения Java SE (на основе командной строки)?

Папка src будет содержать все мои файлы .java в правильно организованных пакетах. Кроме этого у меня есть папка bin, в которой будут мои .class файлы.

У меня есть файлы свойств и файлы конфигурации XML в моем проекте. В какой каталог я должен их поместить? Должен ли я создать пакет с именем com.myproject.config и поместить в него все файлы конфигурации .xml?

Я хочу, чтобы зависимые банки были упакованы вместе с моим окончательным пакетом. Так должен ли я создать папку (скажем, с именем lib) для хранения всех этих .jar файлов?


person HariShankar    schedule 12.06.2012    source источник
comment
Вы можете сделать так, как вы описываете. Нет ни ограничений, ни лучшего принятого способа.   -  person Denys Séguret    schedule 12.06.2012
comment
Многое зависит от того, какой инструмент сборки/IDE вы используете. Обратите внимание, что если вы упаковываете все это самостоятельно, теоретически можно использовать практически любую структуру, в то время как IDE обычно устанавливает структуру, которую она чаще использует. Что касается создания пакета с именем com.myproject.config Да, это кажется разумным.   -  person Andrew Thompson    schedule 12.06.2012
comment
Я думаю, что использование Maven для создания вашего проекта - хороший вариант.   -  person plucury    schedule 12.06.2012
comment
Кстати, этот вопрос действительно больше о том, как развернуть встроенное приложение для конечного пользователя? Что это за приложение? (например, рабочий стол, командная строка, что-то предназначенное для системного трея..?)   -  person Andrew Thompson    schedule 12.06.2012
comment
@AndrewThompson: приложение командной строки   -  person HariShankar    schedule 12.06.2012
comment
Я отредактировал «командную строку» в вопросе, но до сих пор не знаю ответа на свой первый вопрос. этот вопрос действительно больше о том, как развернуть созданное приложение для конечного пользователя? Если нет, то ответ на этот вопрос: "используйте любую структуру, которая работает для вас" .   -  person Andrew Thompson    schedule 12.06.2012


Ответы (4)


Я бы рекомендовал придерживаться макета Maven по умолчанию (а также использовать maven в качестве инструмента сборки)

Продуктивные классы/ресурсы:

src/main/java
src/main/resources

Тестовые данные и классы:

src/test/java
src/test/resources

Maven также может позаботиться о том, чтобы правильно упаковать ваше приложение со всеми необходимыми jar-файлами (ищите плагин сборки maven).

person Konstantin Pribluda    schedule 12.06.2012
comment
Для ленивых: mkdir -p src/{main,test}/{java,resources} - person Jonas Gröger; 12.05.2015
comment
Подробнее здесь: maven.apache.org /руководства/введение/ - person Boris Däppen; 24.10.2015

src/com.enterprise_name.project_name. Main.java (основной класс)

src/com.enterprise_name.project_name.model.(здесь все классы моделей)

src/com.enterprise_name.project_name.view.(здесь все классы представлений, JFrame, Jdialog и т. д.)

src/com.enterprise_name.project_name.view.resources.(здесь все файлы и изображения, используемые в представлениях *note)

src/com.enterprise_name.project_name.controller.(здесь все классы контроллеров)

lib/(здесь все внешние библиотеки - не забудьте добавить в путь сборки)

*Примечание, если вам нужен файл ресурсов (xml, файл конфигурации и т. д.), создайте пакет .resources. в том месте, где вам нужно (модель, контроллер, вид)

person Musculaa    schedule 29.02.2016

Обычно используется следующая структура:

  • src - contains all your source files, and possibly the following as well (might be far down the folder tree):
    • resources - contains resources such as properties files
    • config - все, что связано с конфигом
  • lib - папка, содержащая ваши библиотеки, возможно размещенные в отдельных подпапках
  • bin — содержит скомпилированные классы
person DieterDP    schedule 12.06.2012

Насколько мне известно, стандартной структуры проекта для Java как таковой не существует. Однако различные инструменты и IDE (например, Eclipse) имеют стандартную структуру.

С другой стороны, Maven, инструмент сборки для Java, имеет очень четко определенную (по умолчанию) структуру проекта. Там все исходные файлы Java помещаются в папку src/main/java, а все файлы ресурсов (например, файлы конфигурации) помещаются в папку src/main/resources.

Вот очень краткое введение в Maven, если вы еще этого не знаете: Maven за 5 минут


Что касается вашего вопроса об упаковке с зависимостями, вот фрагмент одного из моих файлов Maven POM, в котором используется Подключаемый модуль сборки для создания файла JAR со всеми включенными зависимостями:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <mainClass>...</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
person rolve    schedule 12.06.2012