final File zipFile = new File(ResourcesPlugin.getWorkspace().getRoot().getLocation().toFile(), product.getName().substring(0, product.getName().length() - 8) + ".zip");
SysOutProgressMonitor.out.println("Exporting Eclipse Product using '" + product.getLocation() + "' as configuration to: " + zipFile);
final FeatureExportInfo info = new FeatureExportInfo();
info.useJarFormat = true;
info.zipFileName = zipFile.getName();
if (prod.useFeatures())
{
info.items = getFeatures(prod);
}
else
{
info.items = getPlugins(prod);
}
info.destinationDirectory = ResourcesPlugin.getWorkspace().getRoot().getLocation().toString();
final Class productExportOperationClass = Class.forName("org.eclipse.pde.internal.core.exports.ProductExportOperation");
final String jobName = "Product export job";
final List<Object> arguments = new ArrayList();
Constructor constructor = null;
//first we look for single argument constructor, which is present in eclipse 3.4
try
{
arguments.add(info);
constructor = productExportOperationClass.getConstructor(info.getClass(), IProduct.class, String.class);
}
catch (final NoSuchMethodException nsme)
{
arguments.add(jobName);
constructor = productExportOperationClass.getConstructor(info.getClass(), String.class, IProduct.class, String.class);
}
arguments.add(prod);
arguments.add(product.getName().substring(0, product.getName().length() - 8));
final Object peo = constructor.newInstance(arguments.toArray());