Итак, сейчас меня немного раздражает Maven 2. Настройка проекта у нас проста: «основной» проект, от которого зависят как «пакетный», так и «веб-проект», и «ушной» проект, который зависит от «веб-проекта». Довольно простые вещи.
Что ж, поскольку ядро используется довольно часто, и это первый раз, когда группа фактически занимается TDD (разработка через тестирование), было создано довольно много макетов, но в основном в веб-проекте — пакетный проект довольно прост в момент.
Этот текущий (запутанный) XML включен в веб-память, чтобы включить основной проект в качестве зависимости:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>XYZ-core</artifactId>
<version>${project.version}</version>
</dependency>
pom работает, если включено только это, а также остальные включенные файлы jar. Один из включенных jar-файлов — это API-интерфейс сервлета, версия 2.4:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${version.servlet-api}</version>
<scope>provided</scope>
</dependency>
Для этого задана область действия, поскольку она будет предоставлена веб-контейнером. Никаких сюрпризов. Только с этим в веб-памяти он запускает тесты и устанавливает без проблем.
Но теперь в сети есть все эти макеты. Пакет также может использовать некоторые из этих макетов. Итак, естественно, я хочу поместить основные тесты в качестве тестов области действия как в пакетном, так и в веб-режиме, чтобы я мог переместить макеты (которые имитируют основные функции) в основной тест, чтобы их можно было использовать в проектах. Следующий фрагмент (запутанный) работает в пакетном проекте:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>XYZ-core</artifactId>
<classifier>tests</classifier>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
Однако, когда я добавляю это в веб-память, я получаю все это, когда пытаюсь создать сеть.
XYZ.java:[33,16] не может разрешить символ: класс HttpServletRequest
Если его удалить, веб-сборки успешно.
Любые идеи? Версия мавена 2.0.4. Я могу попытаться обновить, но это будет означать много хлопот.
РЕДАКТИРОВАТЬ: основные классы сети не могут скомпилироваться с этой ошибкой (также не найден HttpServletResponse). Даже если тесты пропущены (-Dmaven.test.skip=true), эта ошибка возникает.