nous devons étendre la tâche existante pour créer CustomTask
et maintenant pour soutenir l'élément personnalisé imbriqué XYZ créer une méthode dans y notre nouvelle classe
public XYZ createXYZ();
ou
public void addXYZ(XYZ obj)
ou
public void addXYZ(XYZ obj)
<taskdef name="CustomTask" classname="com.ant.task.Customtask">
<classpath>
<path location="lib/"/>
</classpath>
</taskdef>
<typedef name="XYZ" classname="com.ant.type.XYZ" >
<classpath>
<path location="lib/"/>
</classpath>
</typedef>
<target name="MyTarget" >
<CustomTask>
<XYZ></XYZ>
</CopyEncrypted>
</target>
Alors mes fichiers ressemblait à: -
public class CopyEncrypted extends Copy {
public EncryptionAwareFilterSet createEncryptionAwareFilterSet()
{
EncryptionAwareFilterSet eafilterSet = new EncryptionAwareFilterSet();
getFilterSets().addElement(eafilterSet);
return eafilterSet;
}
}
public class EncryptionAwareFilterSet extends FilterSet{
@Override
public synchronized void readFiltersFromFile(File file)
throws BuildException {
log("EncryptionAwareFilterSet::reading filters",0);
super.readFiltersFromFile(file);
Vector<Filter> filts = getFilters();
for (Iterator iterator = filts.iterator(); iterator.hasNext();) {
Filter filter = (Filter) iterator.next();
if (filter.getToken().equalsIgnoreCase("PASSWORD")){
filter.setValue(Encryptor.getEncryptedValue (filter.getValue()) );
}
}
}
}
build.xml
<target name="encrypted-copy" >
<CopyEncrypted todir="dist/xyz/config" overwrite="true">
<fileset dir="config"/>
<encryptionAwareFilterSet>
<filtersfile file="conf/properties/blah-blah.properties" />
</encryptionAwareFilterSet>
</CopyEncrypted>
</target>
macrodef n'est pas l'élément imbriqué. –