Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Что находится в директории Target
Target — директория, создаваемая Maven при сборке Java проекта. Это основное место для хранения скомпилированного кода, артефактов и промежуточных результатов. Понимание её структуры критично для разработчика.
Основная структура
Типичная структура target директории:
target/
├── classes/ # Скомпилированные классы проекта
│ └── com/example/ # Пакеты с .class файлами
│ └── MyClass.class
├── test-classes/ # Скомпилированные тесты
│ └── com/example/
│ └── MyClassTest.class
├── surefire-reports/ # Отчёты тестирования
│ ├── TEST-com.example.MyClassTest.xml
│ └── com.example.MyClassTest.txt
├── site/ # Сгенерированная документация
├── maven-status/ # Служебная информация Maven
├── project-name-1.0.jar # Упакованный JAR архив
└── dependency/ # Скопированные зависимости (если нужны)
Содержимое Target
classes/ — самая важная папка. Содержит все скомпилированные Java классы вашего проекта. Каждый .java файл из src/main/java компилируется в соответствующий .class файл с сохранением структуры пакетов:
src/main/java/com/example/service/UserService.java
↓ компиляция ↓
target/classes/com/example/service/UserService.class
test-classes/ — содержит скомпилированные классы тестов из src/test/java. Эта папка нужна для выполнения JUnit тестов.
surefire-reports/ — отчёты от Maven Surefire плагина (отвечает за запуск тестов). Включает XML и текстовые отчёты с результатами каждого теста, включая failed тесты с stack trace.
JAR/WAR архивы — финальные артефакты. При выполнении mvn package создаётся project-name-version.jar или .war файл, содержащий скомпилированный код и ресурсы.
maven-status/ — служебная информация Maven, например, информация о том, какие цели (goals) уже были выполнены.
site/ — сгенерированная HTML документация проекта (если используется maven-site-plugin). Содержит JavaDoc, отчёты о покрытии тестами, анализ кода и т.д.
Ресурсы
Кроме Java классов, target содержит скопированные ресурсы из src/main/resources и src/test/resources:
src/main/resources/application.properties
↓ копирование ↓
target/classes/application.properties
Это особенно важно для конфигурационных файлов, которые должны быть доступны во время выполнения.
Пример структуры с зависимостями
Если используется maven-assembly-plugin или maven-shade-plugin для создания "fat jar" с зависимостями:
// pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
В этом случае target содержит original-project-1.0.jar (исходный JAR) и project-1.0-shaded.jar (JAR с встроенными зависимостями).
Как очистить Target
Для очистки директории target используется команда:
mvn clean
Это удалит всю директорию target. Обычно используется mvn clean install для полной пересборки проекта с нуля.
Важно знать
- Target не коммитится в Git (.gitignore содержит target/)
- IDE использует target для классового пути во время разработки
- Размер target может быть большим — может занимать гигабайты с зависимостями
- Кеширование — Maven хранит информацию о сборке для оптимизации
Понимание структуры target помогает отлаживать проблемы сборки и лучше организовывать build процесс.