Где хранятся скомпилированные файлы проекта в Maven?

Редакция Просто интернет
Дата 17 февраля 2024
Категории
Поделиться

Apache Maven — это инструмент для автоматизации сборки проектов Java. Он предоставляет возможность компилировать и упаковывать исходный код в исполняемый файл или библиотеку, а также управлять зависимостями проекта. При работе с Maven возникает вопрос: где находятся скомпилированные файлы?

По умолчанию, Maven компилирует исходный код и создает скомпилированные файлы в директории target. В директории target создается поддиректория, соответствующая версии проекта, например, target/1.0.0. В этой поддиректории находятся файлы, скомпилированные из исходного кода проекта.

Один из наиболее часто используемых типов файлов, создаваемых Maven, — это jar-файлы. Они содержат скомпилированный байт-код исходного кода проекта, а также ресурсы проекта, такие как файлы конфигурации или файлы изображений. jar-файлы находятся в директории target и имеют расширение .jar. Для проектов со сложной структурой, в директории target создается дополнительная поддиректория, в которой находятся jar-файлы.

Также, в директории target могут быть созданы другие дополнительные директории, содержащие файлы, полученные в результате выполнения других фаз жизненного цикла Maven, например, фазы тестирования или пакетирования. Например, директория target/test-classes содержит скомпилированные файлы тестовых классов, а директория target/classes содержит скомпилированные файлы основного исходного кода проекта.

Структура проекта и расположение файлов

В проектах, разрабатываемых с использованием Apache Maven, файлы скомпилированного кода, зависимостей и другой сгенерированной информации имеют свое стандартное расположение.

Структура проекта Maven состоит из нескольких директорий и файлов, каждый из которых имеет свою роль в процессе разработки и сборки проекта.

Вот основные директории и их назначение:

  • src/main/java: в этой директории размещается исходный код проекта на языке Java. Здесь вы создаете и изменяете классы проекта.
  • src/main/resources: в этой директории размещаются ресурсы проекта, такие как файлы конфигурации, шаблоны, изображения и другие. Здесь вы храните все, что не является исходным кодом на Java.
  • src/test/java: в этой директории размещается код модульных тестов. Здесь вы создаете и изменяете классы для тестирования функциональности вашего проекта.
  • src/test/resources: в этой директории размещаются ресурсы, необходимые для модульных тестов.
  • target: в этой директории хранятся результаты компиляции, сборки и тестирования проекта. Здесь находятся скомпилированные классы, зависимости, отчеты, артефакты и другие файлы, сгенерированные Maven.

В дополнение к указанным директориям, в проекте Maven также присутствуют файлы, которые имеют особое значение в процессе сборки и управления проектом:

  • pom.xml: это основной файл конфигурации проекта Maven. В нем указываются зависимости, плагины, параметры сборки и другие настройки проекта.
  • .m2: это директория, в которой Maven хранит скачанные зависимости (библиотеки) проекта. Она находится в домашней директории пользователя и содержит поддиректории для каждой зависимости.
  • mvnw: это скрипт запуска Maven, который позволяет запускать сборку проекта без установки самого Maven в систему.
  • mvnw.cmd: аналогично предыдущему файлу, но для ОС Windows.

Знание структуры проекта и расположения файлов помогает разработчикам находить нужные файлы и легко организовывать проекты на основе стандартов Maven.

Папка target: основное место расположения

В проектах, построенных с использованием Maven, папка target является одним из основных мест расположения скомпилированных файлов. Данная папка создается в корне проекта после выполнения сборки с помощью Maven.

Папка target содержит результаты компиляции и сборки проекта. Внутри папки target находятся следующие подпапки:

  • classes: в данной папке хранятся скомпилированные классы проекта;
  • test-classes: в этой папке хранятся скомпилированные классы тестовых методов проекта;
  • generated-sources: содержит сгенерированный исходный код, созданный во время сборки проекта;
  • maven-archiver: папка для сохранения файлов, необходимых для создания архива проекта;
  • maven-status: здесь содержатся файлы, которые используются Maven для отслеживания изменений и состояния проекта;
  • surefire-reports: папка для хранения отчетов о выполнении юнит-тестов;
  • site: в этой папке создаются файлы, необходимые для проектной документации и сайта проекта.

Кроме этих папок, папка target также может содержать другие дополнительные папки, которые создаются в процессе сборки в зависимости от настроек проекта.

Папка target очень важна для Maven, поскольку представляет собой конечный результат работы сборки проекта. Здесь хранятся все необходимые файлы для запуска и тестирования приложения, включая классы, ресурсы, зависимости и отчеты о выполнении тестов.

Использование папки target позволяет проекту организовать свою структуру файлов и ресурсов таким образом, чтобы она была удобной для разработки, тестирования и развертывания приложения.

Обзор папок и файлов в папке target

В проекте Maven, после компиляции, все сгенерированные файлы исходного кода и другие ресурсы сохраняются в папке target. Эта папка имеет следующую структуру:

  • classes/: В этой папке находятся скомпилированные классы проекта. Каждый файл .java, содержащий исходный код проекта, будет скомпилирован в соответствующий файл .class и сохранен в этой папке. Структура папок внутри classes/ соответствует структуре пакетов в исходном коде.
  • test-classes/: В этой папке находятся скомпилированные тестовые классы проекта. Тестовые классы обычно размещаются в отдельной папке, отличной от папки classes/, чтобы отделить их от основного кода проекта.
  • generated-sources/ и generated-test-sources/: В этих папках хранятся любые файлы, которые были созданы или изменены во время процесса генерации исходного кода, например, с помощью плагинов Maven.
  • maven-archiver/: В этой папке находятся файлы, связанные с созданием артефактов проекта, таких как jar или war файлы.
  • maven-status/: Эта папка содержит информацию о состоянии проекта в рамках системы контроля версий, такой как SVN или Git.
  • surefire-reports/ и junitreports/: В этих папках хранятся отчеты о выполнении юнит-тестов.

В папке target также могут быть другие файлы и папки, которые связаны с различными плагинами Maven и настройками проекта. Например, папка site/ может содержать результирующую документацию проекта, созданную с помощью плагинов Maven.

Обычно папка target не добавляется в систему контроля версий и удаляется при очистке или перекомпиляции проекта с помощью команды mvn clean.

Файлы скомпилированных классов:

При использовании Maven в проекте все исходные файлы Java компилируются в байт-код и сохраняются в папке «target/classes». В данной папке находятся все скомпилированные классы проекта, а также ресурсы, которые были скопированы во время сборки проекта.

Структура папки «target/classes» обычно соответствует структуре исходных файлов проекта. Если у вас есть пакеты в проекте, то они также будут отображены в папке «target/classes».

Для каждого пакета в проекте будет создана соответствующая папка в папке «target/classes». Внутри каждой папки пакета будут находиться скомпилированные классы Java.

Например, если у вас есть пакет с именем «com.example», то папка «target/classes» будет содержать папку с именем «com», внутри которой будет папка с именем «example», и внутри этой папки будут находиться скомпилированные классы.

Вы можете использовать скомпилированные классы в своем проекте, например, для выполнения тестов или запуска приложения.

Расположение артефактов

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

  • target: В данной директории содержатся результаты компиляции, тестирования и упаковки проекта. Здесь обычно находится собранный JAR-файл (Java Archive), который является готовым исполняемым файлом приложения. В директории target также могут храниться другие артефакты, такие как скомпилированные классы, тестовые отчеты и документация.
  • src/main/resources: В этой директории содержатся ресурсы проекта, такие как файлы конфигурации, изображения или шаблоны. При сборке проекта, ресурсы из этой директории обычно копируются в директорию target/classes, которая также содержит скомпилированные классы проекта. Это позволяет использовать ресурсы внутри JAR-файла без необходимости указывать абсолютные пути к файлам.
  • src/test/resources: Аналогично предыдущей директории, в этой директории содержатся ресурсы, используемые в тестах проекта. Ресурсы из этой директории также копируются в target/test-classes во время сборки проекта.

Кроме указанных выше директорий, Maven также использует стандартные директории для исходных файлов и отчетов, такие как src/main/java, src/test/java, src/site и другие. Эти директории обычно содержат исходный код, модульные тесты, файлы для генерации отчетов и другие материалы.

Понимание структуры проекта и местоположения различных артефактов важно для правильной настройки и работы с проектом в системе сборки Maven.

Особенности расположения файлов в разных мавен-плагинах

Когда вы работаете с проектом, использующим систему сборки Maven, вы можете столкнуться с различными мавен-плагинами, которые предоставляют различные функциональные возможности. Каждый мавен-плагин может иметь свои собственные особенности расположения файлов.

Рассмотрим несколько распространенных мавен-плагинов и их особенности расположения файлов:

Maven Compiler Plugin

Мавен-плагин Maven Compiler Plugin используется для компиляции исходного кода Java проекта. Компилируемые файлы находятся по следующему пути: target/classes. Этот путь содержит скомпилированный байт-код исходного кода Java.

Maven Surefire Plugin

Maven Surefire Plugin используется для выполнения модульных тестов проекта. Исходные файлы для выполнения модульных тестов обычно располагаются в каталоге src/test/java. Результаты выполнения модульных тестов сохраняются в каталоге target/surefire-reports, где вы можете найти отчеты о тестировании и другую отладочную информацию.

Maven Javadoc Plugin

Мавен-плагин Maven Javadoc Plugin используется для создания документации на основе комментариев JavaDoc в коде проекта. Сгенерированная документация обычно сохраняется в каталоге target/site/apidocs, где можно найти HTML-файлы документации и связанные ресурсы (например, изображения).

Maven Assembly Plugin

Мавен-плагин Maven Assembly Plugin используется для создания архивов проекта. Расположение созданных архивов зависит от конфигурации плагина, но по умолчанию созданные архивы находятся в каталоге target.

Maven Clean Plugin

Мавен-плагин Maven Clean Plugin используется для удаления скомпилированных файлов и других сгенерированных ресурсов. При выполнении цели clean все ранее созданные файлы и каталоги находятся в каталоге target будут удалены.

Это только несколько примеров мавен-плагинов и их особенностей расположения файлов. Каждый мавен-плагин может иметь свои собственные правила и структуры каталогов. Поэтому, при работе с мавен-плагинами, рекомендуется обратиться к документации соответствующего плагина для получения подробной информации о расположении файлов и особенностях его использования.

Изменение расположения скомпилированных файлов

По умолчанию, Maven сохраняет скомпилированные файлы в директории target, которая создается в корневой директории проекта. Однако, в некоторых случаях вам может потребоваться изменить это стандартное расположение.

Существует несколько способов, с помощью которых можно изменить директорию, в которой будут расположены скомпилированные файлы Maven.

  1. Использование элемента build в файле pom.xml
  2. Один из самых простых способов изменить расположение скомпилированных файлов — это использование элемента build в файле pom.xml. Внутри этого элемента вы можете указать путь к новой директории, используя элемент outputDirectory. Например:

    <build>

    <outputDirectory>path/to/new/directory</outputDirectory>

    </build>

    В этом примере скомпилированные файлы будут сохраняться в директории «path/to/new/directory».

  3. Использование свойства maven.build.directory
  4. Другой подход — использование встроенного свойства maven.build.directory, которое представляет собой путь к директории, в которой будут сохранены скомпилированные файлы. Для изменения расположения можно указать это свойство в файле pom.xml следующим образом:

    <properties>

    <maven.build.directory>path/to/new/directory</maven.build.directory>

    </properties>

    Здесь мы устанавливаем значение свойства maven.build.directory равным «path/to/new/directory». В результате все скомпилированные файлы будут сохраняться в указанной директории.

  5. Использование плагина Maven
  6. Также можно воспользоваться плагином Maven для изменения расположения скомпилированных файлов. Некоторые плагины могут предоставлять конфигурационные настройки для указания нужной директории. Например, плагин maven-compiler-plugin позволяет изменить директорию, в которой будут расположены скомпилированные классы, с помощью элемента outputDirectory:

    <build>

    <plugins>

    <plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-compiler-plugin</artifactId>

    <configuration>

    <outputDirectory>path/to/new/directory</outputDirectory>

    </configuration>

    </plugin>

    </plugins>

    </build>

    В этом примере мы указываем плагину maven-compiler-plugin сохранять скомпилированные классы в директории «path/to/new/directory».

Выберите подход, который наиболее соответствует вашим потребностям и установите новое расположение для скомпилированных файлов Maven в своем проекте.

Вопрос-ответ

Куда сохраняются скомпилированные файлы Maven в проекте?

Skomplirovannye faily Maven v proekte obychno sohranyayutsya v papke «target».

Как можно указать другую папку для сохранения скомпилированных файлов Maven?

Est’ vozmozhnost’ ukazat’ druguyu papku dlya sohraneniya skomplirovannyh failov Maven s pomosch’yu configuracii v file pom.xml.

Можно ли задать другое имя для папки с скомпилированными файлами Maven?

Da, imeyet’sya vozmozhnost’ nazvat’ papku s skomplirovannymi failami Maven lyubym drugim imenem s pomosch’yu configuracii v file pom.xml.

Разделы сайта

1C Adobe Android AutoCAD Blender CorelDRAW CSS Discord Excel Figma Gimp Gmail Google HTML iPad iPhone JavaScript LibreOffice Linux Mail.ru MineCraft Ozon Paint PDF PowerPoint Python SketchUp Telegram Tilda Twitch Viber WhatsApp Windows Word ВКонтакте География Госуслуги История Компас Литература Математика Ошибки Тик Ток Тинькофф Физика Химия