------ Introspecting a class loader ------ Mark Hobson ------ 19 May 2008 ------ Introspecting a class loader Maven Runtime can introspect a class loader to obtain metadata for each Maven project accessible within it. * Using project properties To obtain a list of <<<{{{../apidocs/org/apache/maven/shared/runtime/MavenProjectProperties.html}MavenProjectProperties}}>>> instances for each Maven project accessible within a specified class loader: --- /** * @component */ private MavenRuntime runtime; public void processProjects() throws MavenRuntimeException { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); List projects = runtime.getProjectsProperties( classLoader ); // process projects } --- * Using project XML To obtain a list of <<<{{{http://maven.apache.org/ref/current/maven-project/apidocs/org/apache/maven/project/MavenProject.html}MavenProject}}>>> instances for each Maven project accessible within a specified class loader: --- /** * @component */ private MavenRuntime runtime; public void processProjects() throws MavenRuntimeException { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); List projects = runtime.getProjects( classLoader ); // process projects } --- * Sorting projects by dependency order When obtaining Maven metadata using project XML, the resultant <<>> instances can be sorted by dependency order. To obtain a list of <<>> instances for each Maven project accessible within a specified class loader ordered by their dependencies: --- /** * @component */ private MavenRuntime runtime; public void processProjects() throws MavenRuntimeException { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); List projects = runtime.getSortedProjects( classLoader ); // process projects } --- Note that project properties cannot be sorted by dependency order since they do not contain any dependency information.