use of org.apache.maven.shared.io.location.Location in project maven-plugins by apache.
the class DefaultAssemblyReader method mergeComponentsWithMainAssembly.
/**
* Add the contents of all included components to main assembly
*
* @param assembly The assembly
* @param assemblyDir The assembly directory
* @param transformer The component interpolator
* @throws AssemblyReadException .
*/
protected void mergeComponentsWithMainAssembly(final Assembly assembly, final File assemblyDir, final AssemblerConfigurationSource configSource, ComponentXpp3Reader.ContentTransformer transformer) throws AssemblyReadException {
final Locator locator = new Locator();
if (assemblyDir != null && assemblyDir.exists() && assemblyDir.isDirectory()) {
locator.addStrategy(new RelativeFileLocatorStrategy(assemblyDir));
}
// allow absolute paths in componentDescriptor... MASSEMBLY-486
locator.addStrategy(new RelativeFileLocatorStrategy(configSource.getBasedir()));
locator.addStrategy(new FileLocatorStrategy());
locator.addStrategy(new ClasspathResourceLocatorStrategy());
final AssemblyExpressionEvaluator aee = new AssemblyExpressionEvaluator(configSource);
final List<String> componentLocations = assembly.getComponentDescriptors();
for (String location : componentLocations) {
// allow expressions in path to component descriptor... MASSEMBLY-486
try {
location = aee.evaluate(location).toString();
} catch (final Exception eee) {
getLogger().error("Error interpolating componentDescriptor: " + location, eee);
}
final Location resolvedLocation = locator.resolve(location);
if (resolvedLocation == null) {
throw new AssemblyReadException("Failed to locate component descriptor: " + location);
}
Component component = null;
Reader reader = null;
try {
reader = new InputStreamReader(resolvedLocation.getInputStream());
component = new ComponentXpp3Reader(transformer).read(reader);
} catch (final IOException e) {
throw new AssemblyReadException("Error reading component descriptor: " + location + " (resolved to: " + resolvedLocation.getSpecification() + ")", e);
} catch (final XmlPullParserException e) {
throw new AssemblyReadException("Error reading component descriptor: " + location + " (resolved to: " + resolvedLocation.getSpecification() + ")", e);
} finally {
IOUtil.close(reader);
}
mergeComponentWithAssembly(component, assembly);
}
}
use of org.apache.maven.shared.io.location.Location in project maven-plugins by apache.
the class DefaultAssemblyReader method addAssemblyFromDescriptor.
private Assembly addAssemblyFromDescriptor(final String spec, final Locator locator, final AssemblerConfigurationSource configSource, final List<Assembly> assemblies) throws AssemblyReadException, InvalidAssemblerConfigurationException {
final Location location = locator.resolve(spec);
if (location == null) {
if (configSource.isIgnoreMissingDescriptor()) {
getLogger().debug("Ignoring missing assembly descriptor with ID '" + spec + "' per configuration.\nLocator output was:\n\n" + locator.getMessageHolder().render());
return null;
} else {
throw new AssemblyReadException("Error locating assembly descriptor: " + spec + "\n\n" + locator.getMessageHolder().render());
}
}
Reader r = null;
try {
r = ReaderFactory.newXmlReader(location.getInputStream());
File dir = null;
if (location.getFile() != null) {
dir = location.getFile().getParentFile();
}
final Assembly assembly = readAssembly(r, spec, dir, configSource);
r.close();
r = null;
assemblies.add(assembly);
return assembly;
} catch (final IOException e) {
throw new AssemblyReadException("Error reading assembly descriptor: " + spec, e);
} finally {
IOUtil.close(r);
}
}
Aggregations