Retrieving Maven Plugin Classpath in Runtime
In Maven plugin it is very often necessary to get a full classpath (determined by the project dependencies), in relation to a certain scope. For example, you want to get a full list of all JAR files available for the project in test scope.
Classpath class helps to do this in one line:
public class MyMojo extends AbstractMojo {
/**
* @parameter default-value="${project}"
* @readonly
*/
private MavenProject project;
/**
* @parameter default-value="${repositorySystemSession}"
* @readonly
*/
private RepositorySystemSession session;
@Override
public void execute() {
Collection<File> jars = new Classpath(
this.getProject(),
this.session.getLocalRepository().getBasedir(),
"test"
);
}
}Classpath uses Aether to collect required information and resolve all transitive dependencies. It also takes into account dependency exclusions.