我正在做一个Maven项目,并将guava依赖关系和另一个项目的依赖关系添加到了pom.xml文件中。我想获取该项目给定包的所有类,并将其作为依赖项添加到pom中。
所以我尝试了这个:
public void getClassOfPackage() {
final ClassLoader loader = Thread.currentThread()
.getContextClassLoader();
try {
for (final ClassPath.ClassInfo info : ClassPath.from(loader)
.getTopLevelClasses()) {
System.out.println(info.getSimpleName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new TestMain().getClassOfPackage();
}
我知道这是错误的,因为它可以在控制台中提供:
HierarchicalConfigurationConverter
HierarchicalConfigurationXMLReader
HierarchicalINIConfiguration
SubsetConfiguration
SystemConfiguration...
我不知道在哪里可以指定我正在谈论的项目,以及如何传递包名称,它不带我包含其中的所有类。
最佳答案
我可以显示在同一项目中的所有类,但对于尚未作为依赖项添加到pom.xml中的其他项目,则可以显示它们:
我在同一个项目中拥有的解决方案:
public void getClassOfPackage() {
final ClassLoader loader = Thread.currentThread()
.getContextClassLoader();
try {
ClassPath classpath = ClassPath.from(loader); // scans the class path used by classloader
for (ClassPath.ClassInfo classInfo : classpath.getTopLevelClasses("org.mypackage")) {
System.out.println(classInfo.getSimpleName()+" <==> "+classInfo.getPackageName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new TestMain().getClassOfPackage();
}