首页 > 解决方案 > package-info.java 如何在 maven 项目中的 main 和 test 之间共享?

问题描述

在一个 Maven 项目中,我创建了一个简单的单元测试,它加载给定根包中的所有类,迭代它们并处理有关它们的包的一些信息(即是否为给定包提供了特定的注释)。

给定以下文件:

/src/main/com/andy/Foo.java
/src/main/com/andy/package-info.java
/src/main/com/andy/inner/Bar.java

src/test/com/andy/inner/SomeTest.java
src/test/com/andy/inner/package-info.java

当我加载Class<?>forBar.java并尝试获取其包的注释(使用该Class#getPackage方法)时,令我惊讶的是,我发现包以某种方式共享了目录中的注释,该src/test目录package-info.java位于文件旁边SomeTest.java(否则包就是相同的)。

我还发现它也可以反过来工作,即没有package-info.javain的类src/test似乎package-info.java从目录下的同一个包中共享 a src/main

这是特定于 Maven 项目的,还是常规的 Java 行为?有没有办法不从其他目录加载相关包?

标签: javamavenclasspackage-info

解决方案


推荐阅读