blob: 6b7d630477ee2bd94e00fe7396d0bdd72c29f685 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.easyant.tasks;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.ivy.ant.IvyPostResolveTask;
import org.apache.ivy.core.cache.ResolutionCacheManager;
import org.apache.ivy.core.module.descriptor.Configuration;
import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
import org.apache.ivy.core.module.descriptor.MDArtifact;
import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorWriter;
import org.apache.tools.ant.BuildException;
public class RegisterArtifact extends IvyPostResolveTask {
private String name;
private String type;
private String ext;
private String confs = "*";
private String classifier;
@Override
public void doExecute() throws BuildException {
prepareAndCheck();
DefaultModuleDescriptor md = (DefaultModuleDescriptor) getResolvedReport().getModuleDescriptor();
// this is a published artifact
String artName = getSettings().substitute(getName());
artName = artName == null ? md.getModuleRevisionId().getName() : artName;
String artType = getSettings().substitute(getType());
artType = artType == null ? "jar" : artType;
String artExt = getSettings().substitute(getExt());
artExt = artExt != null ? artExt : artType;
Map<String, String> extraAttributes = new HashMap<String, String>();
if (getClassifier() != null) {
md.addExtraAttributeNamespace("m", "http://ant.apache.org/ivy/maven");
extraAttributes.put("m:classifier", getClassifier());
}
MDArtifact artifact = new MDArtifact(md, artName, artType, artExt, null, extraAttributes);
String[] configurations = getConfs().split(",");
for (String configuration : configurations) {
if ("*".equals(configuration)) {
String[] declaredConfs = md.getConfigurationsNames();
for (String declaredConf : declaredConfs) {
artifact.addConfiguration(declaredConf);
md.addArtifact(declaredConf, artifact);
}
} else {
// create configuration if it doesn't exist
if (md.getConfiguration(configuration) == null) {
Configuration generatedConfiguration = new Configuration(configuration);
md.addConfiguration(generatedConfiguration);
}
artifact.addConfiguration(configuration);
md.addArtifact(configuration, artifact);
}
}
ResolutionCacheManager cacheManager = getSettings().getResolutionCacheManager();
File ivyFileInCache = cacheManager.getResolvedIvyFileInCache(md.getResolvedModuleRevisionId());
try {
XmlModuleDescriptorWriter.write(md, ivyFileInCache);
} catch (IOException e) {
throw new BuildException("Can't register specified artifact", e);
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getExt() {
return ext;
}
public void setExt(String ext) {
this.ext = ext;
}
public String getConfs() {
return confs;
}
public void setConfs(String confs) {
this.confs = confs;
}
public String getClassifier() {
return classifier;
}
public void setClassifier(String classifier) {
this.classifier = classifier;
}
}