← Назад к вопросам

Что может находиться в Target

1.8 Middle🔥 81 комментариев
#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что находится в директории 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 процесс.

Что может находиться в Target | PrepBro