Spring反射无法识别所有依赖项

时间:2018-11-21 14:21:58

标签: java spring maven reflection dependencies

我有一个带有多个API的Maven项目,其大致的扁平结构是:

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

每个模块都有:

<parent>
    <groupId>com.application</groupId>
    <artifactId>application</artifactId>
    <version>placeholder</version>
</parent>
  • 某些API(api-01api-02 ... api-20)依赖于common
  • 每个API都遵循包命名约定,例如。 com.application.api01

  • global依赖于所有API依赖项(api-01api-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的情况下运行独立测试时, 所有 这些类将被正确识别,并且可以看到它们。我猜是因为存在带有内置target文件的jar文件夹。

Maven测试

构建项目并使用mvn clean install运行所有测试时,我看到任何API中都包含 no 类(api-01,{ {1}} ... api-02)。但是api-20中的所有类都可以识别。 common文件夹是在构建模块时创建的,并且由于target是最后一个模块,因此,我希望所有类(来自global文件)都应被识别。

问题

如何确保Maven能够查看jar中的所有API类?我还没有使用Java 9,但是没有使用Java 8。

我可以根据要求提供更多信息。

0 个答案:

没有答案