内省类加载器

Maven Runtime 可以自省类加载器,以获取其中可访问的每个 Maven 项目的元数据。

使用项目属性

要获取在指定类加载器中可访问的每个 Maven 项目的MavenProjectProperties实例列表:

/**
 * @component
 */
private MavenRuntime runtime;

public void processProjects() throws MavenRuntimeException
{
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    
    List<MavenProjectProperties> projects = runtime.getProjectsProperties( classLoader );
    
    // process projects
}

使用项目 XML

要获取在指定类加载器中可访问的每个 Maven 项目的MavenProject实例列表:

/**
 * @component
 */
private MavenRuntime runtime;

public void processProjects() throws MavenRuntimeException
{
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    
    List<MavenProject> projects = runtime.getProjects( classLoader );
    
    // process projects
}

按依赖顺序对项目进行排序

使用项目 XML 获取 Maven 元数据时,生成的MavenProject实例可以按依赖顺序排序。要获取在指定类加载器中可访问的每个 Maven 项目的MavenProject实例列表,该类加载器按其依赖项排序:

/**
 * @component
 */
private MavenRuntime runtime;

public void processProjects() throws MavenRuntimeException
{
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    
    List<MavenProject> projects = runtime.getSortedProjects( classLoader );
    
    // process projects
}

请注意,项目属性不能按依赖顺序排序,因为它们不包含任何依赖信息。