我正在做一个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();
}

08-24 18:12