package aQute.bnd.ant; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.Map; import java.util.Properties; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import aQute.bnd.osgi.Processor; import aQute.lib.utf8properties.UTF8Properties; public class ExpandPropertiesTask extends BaseTask { File propertyFile; @Override @SuppressWarnings("cast") public void execute() throws BuildException { try { if (propertyFile.exists()) { Properties properties = new UTF8Properties(); properties.putAll((Map< ? , ? >) getProject().getProperties()); try (Processor processor = new Processor(properties)) { processor.setProperties(propertyFile); Project project = getProject(); Properties flattened = processor.getFlattenedProperties(); for (Iterator<Object> i = flattened.keySet().iterator(); i.hasNext();) { String key = (String) i.next(); if (project.getProperty(key) == null) { project.setProperty(key, flattened.getProperty(key)); } } } } report(); } catch (IOException e) { e.printStackTrace(); throw new BuildException(e); } } public void setPropertyFile(File file) { this.propertyFile = file; } }