Да, в Java можно создавать несколько выполняемых файлов или JAR-архивов в одном проекте.
Каждый JAR-архив представляет собой сжатый файл, в котором содержится один или несколько классов, библиотек, ресурсов или других файлов, необходимых для выполнения программы. JAR-архивы в Java используются для организации и упаковки программного кода и ресурсов в один файл, что облегчает его распространение и использование в различных средах выполнения Java.
Чтобы создать несколько JAR-архивов в одном проекте, вы можете использовать средства сборки проекта, такие как Maven или Gradle. Эти инструменты позволяют конфигурировать и создавать различные артефакты проекта, включая JAR-файлы.
В проекте может быть несколько точек входа, каждая из которых может быть упакована в отдельный JAR-архив. Это полезно, например, если вы разрабатываете набор инструментов или библиотеку, которая предоставляет различные функциональные возможности, и вы хотите иметь возможность использовать каждую из этих возможностей независимо от других. Или если у вас есть основная программа и несколько дополнительных модулей или расширений, которые могут быть упакованы в отдельные JAR-архивы.
Чтобы создать JAR-архив в Maven, вы должны определить соответствующую информацию в файле pom.xml, включая зависимости, ресурсы, классы и точку входа. Следующий пример показывает, как определить конфигурацию для создания JAR-архива с помощью Maven:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <mainClass>com.example.MainClass</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>
Аналогично, в Gradle вы можете определить конфигурацию для создания JAR-архива в файле build.gradle:
jar { manifest { attributes 'Main-Class': 'com.example.MainClass' } }
Оба инструмента также позволяют вам настраивать атрибуты JAR-архива, включая зависимости, ресурсы, контрольные суммы и другие метаданные.
В итоге, создав несколько JAR-архивов в одном проекте, вы сможете иметь разделение функциональности и логику на независимые компоненты, что может быть полезно для организации проекта, облегчения сопровождения и повторного использования кода.