* @return The assembly artifact selected to be installed.
*
* @throws MojoExecutionException Failed to select assembly artifact
*/
protected Artifact getAssemblyArtifact() throws MojoExecutionException {
AssemblyConfig config;
if (assemblies == null || assemblies.length == 0) {
throw new MojoExecutionException("At least one assembly configuration must be specified");
}
else if (assemblies.length > 1 && assemblyId == null && defaultAssemblyId == null) {
throw new MojoExecutionException("Must specify assemblyId (or defaultAssemblyId) when more than on assembly configuration is given");
}
else if (assemblies.length == 1) {
config = assemblies[0];
}
else {
if (assemblyId == null) {
assemblyId = defaultAssemblyId;
}
log.debug("Searching for assembly config for id: " + assemblyId);
// Make sure there are no duplicate ids
Map idMap = new HashMap();
for (int i=0; i < assemblies.length; i++) {
String id = assemblies[i].getId();
if (id == null) {
throw new MojoExecutionException("Missing id for assembly configuration: " + assemblies[i]);
}
if (idMap.containsKey(id)) {
throw new MojoExecutionException("Duplicate assembly id: " + id);
}
idMap.put(id, assemblies[i]);
}
config = (AssemblyConfig) idMap.get(assemblyId);
if (config == null) {
throw new MojoExecutionException("Missing assembly configuration for id: " + assemblyId);
}
}
log.info("Using assembly configuration: " + config.getId());
Artifact artifact = getArtifact(config);
if (artifact.getFile() == null) {
throw new MojoExecutionException("Assembly artifact does not have an attached file: " + artifact);
}