Весеннее отражение не распознает все зависимости - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть проект Maven с несколькими API, и грубая плоская структура:

application
- common
- api-01
- api-02
- ...
- api-20
- global

Каждый из модулей имеет:

<parent>
    <groupId>com.application</groupId>
    <artifactId>application</artifactId>
    <version>placeholder</version>
</parent>
  • Некоторые из API (api-01, api-02 ... api-20) зависят от common.
  • Каждый API соответствует соглашению об именах пакетов, например,com.application.api01

  • У global есть зависимости от всех зависимостей API (api-01, api-02 ... api-20).

В global есть тестовый класс, где я использую ClassPathScanningCandidateComponentProvider , чтобы получить все классы во всех API:

final ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
provider.addIncludeFilter(new RegexPatternTypeFilter(Pattern.compile(".*")));
final Set<BeanDefinition> classes = provider.findCandidateComponents("com.application");

Автономный тест

Когда я запускаю автономный тест только без Maven, all классы распознаются правильно, и я вижу их.Я думаю, это происходит потому, что существует папка target со встроенным файлом jar.

Maven test

Когда я собираю проект и запускаю весь тест с mvn clean install, я вижу нет класс включен в любой API (api-01, api-02 ... api-20).Все же все классы от common признаны.Папка target создается при сборке модуля, и поскольку global создается как последний, я ожидаю, что все классы (из файлов jar) должны быть распознаны.

Вопрос

Как обеспечить, чтобы Maven мог видеть все классы API в global?Я пока не использую Java 9, но Java 8.

Я могу предоставить дополнительную информацию по запросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...