in maven-plugin-testing-harness/src/main/java/org/apache/maven/plugin/testing/AbstractMojoTestCase.java [171:206]
private File getPluginArtifactFile() throws IOException {
final String pluginDescriptorLocation = getPluginDescriptorLocation();
final URL resource = getClass().getResource("/" + pluginDescriptorLocation);
File file = null;
// attempt to resolve relative to META-INF/maven/plugin.xml first
if (resource != null) {
if ("file".equalsIgnoreCase(resource.getProtocol())) {
String path = resource.getPath();
if (path.endsWith(pluginDescriptorLocation)) {
file = new File(path.substring(0, path.length() - pluginDescriptorLocation.length()));
}
} else if ("jar".equalsIgnoreCase(resource.getProtocol())) {
// TODO is there a helper for this somewhere?
try {
URL jarfile = new URL(resource.getPath());
if ("file".equalsIgnoreCase(jarfile.getProtocol())) {
String path = jarfile.getPath();
if (path.endsWith(pluginDescriptorLocation)) {
file = new File(path.substring(0, path.length() - pluginDescriptorLocation.length() - 2));
}
}
} catch (MalformedURLException e) {
// not jar:file:/ URL, too bad
}
}
}
// fallback to test project basedir if couldn't resolve relative to META-INF/maven/plugin.xml
if (file == null || !file.exists()) {
file = new File(getBasedir());
}
return file.getCanonicalFile();
}