У меня есть два проекта, foo
и foo-web
под com.example
группа. foo-web
зависит от foo
.
Чтобы иметь возможность разрабатывать UI-часть приложения без зависимости от внешних сервисов, в foo
были реализованы фиктивные DAO (они возвращают статические данные, поэтому нам не нужно подключаться к базам данных и т. Д.).
От нас требовалось переместить фиктивные классы в src / test / java
. Это означает, что они не развертываются с foo.jar
для войны, построенной из веб-проекта.Я нашел эти инструкции на сайте maven, но, похоже, они мне не подходят.
В foo
pom.xml
у меня есть:
maven-jar-plugin
test-jar
test-compile
test-jar
При запуске mvn install
на foo-web
, в цель foo
Я бы получил два jar-файла: foo-1.0.0-SNAPSHOT.jar
и foo-1.0.0-SNAPSHOT-tests.jar
. Они оба отлично устанавливаются в локальном репозитории maven.
Раньше зависимость foo-web
выглядела так:
com.example
foo
1.0.0-SNAPSHOT
И это запускало развертывание foo-1.0.0-SNAPSHOT.jar
во время войны. Теперь я хочу также развернуть jar-файл -tests
, желательно только для «локального» профиля.
Я пробовал сделать это разными способами:
local
com.example
foo
1.0.0-SNAPSHOT
test-jar
Это приводит к развертыванию исходного jar-файла с другим именем: com.example-foo.jar
и не развертывает тестовый jar-файл. Я также пробовал использовать
вместо
в зависимости, но он по-прежнему делает то же самое. Я попытался использовать указанную выше зависимость вне профиля (наряду с другими), но она по-прежнему ведет себя так же.
Если я добавлю
к основной зависимости (без добавления другой зависимости), я получу развернутую тестовую банку (с тем же именем, что и выше), но исходный код, естественно, не быть развернутым.
Единственное отличие от того, что написано в документации, состоит в том, что для тестовой зависимости не указана область видимости. Работает ли это только для тестовой области
? Можно как-то иначе развернуть тестовые классы.
Я знаю, что вопрос немного запутанный, пожалуйста, дайте мне знать, если я могу что-то уточнить.
Спасибо!
Я пробовал еще несколько способов, но все равно не работает.
Я добавил еще одно выполнение в maven-jar-plugin в проекте foo
(зависимость, а не основной веб-проект), в котором я надеялся заставить maven компилировать тестовые классы в той же самой банке. в качестве основных и ссылаются на большой пакет другим классификатором. Я не мог заставить его работать:
local-build
package
jar
batman
${basedir}/src/test/java
**
jar был создан с помощью классификатора batman
, но я не смог найти способ заставить его включать тестовые классы в jar
] Цель.
Сделав это, я понял, что это не зависит от отношения test-jar
type / tests
classifier / test
scope. Когда я попытался указать новый jar, который я создаю, помимо основного, я получил то же поведение, что и при попытке включить jar -tests
. Я проверил локальный репозиторий maven, и все банки из зависимого проекта устанавливаются нормально, поэтому проблема заключается в разрешении зависимостей основного проекта.
Все сводится к вопросу, можно ли включить одну и ту же зависимость в несколько классификаторов. Из того, что я видел до сих пор, ответ отрицательный - я всегда получаю jar com.example-foo
, когда указываю одну и ту же зависимость несколько раз с разными классификаторами.