blob: 82d1683ac85b192245c2df5045ab6b7b634c9a12 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2013 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM - Initial API and implementation
*******************************************************************************/
package org.eclipse.pde.internal.build.tasks;
import java.util.Properties;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.pde.internal.build.*;
import org.eclipse.pde.internal.build.packager.PackagerGenerator;
import org.eclipse.pde.internal.build.site.BuildTimeSiteFactory;
import org.eclipse.pde.internal.build.site.ProfileManager;
/**
* Internal task.
* Generate assemble scripts to repackage binary distributions.
* @since 3.0
*/
public class PackagerTask extends Task {
protected PackagerGenerator generator;
private final Properties antProperties = new Properties();
{
generator = new PackagerGenerator();
generator.setReportResolutionErrors(true);
generator.setIgnoreMissingPropertiesFile(true);
BuildTimeSiteFactory.setInstalledBaseSite(null);
}
/**
* Set the directory where the packaging will occur
* @param workingLocation the location
*/
public void setWorkingDirectory(String workingLocation) {
generator.setWorkingDirectory(workingLocation);
}
/**
* Set the features to assemble
* @param featureList a comma separated list of features to package
*/
public void setFeatureList(String featureList) throws BuildException {
generator.setFeatureList(featureList);
}
/**
* Set the configuration for which the assembling is being done
* @param configInfo a configuration
* @throws CoreException
*/
public void setConfigInfo(String configInfo) throws CoreException {
AbstractScriptGenerator.setConfigInfo(configInfo);
}
/**
* Set on a configuration basis, the format of the archive being produced. The default is set to be configuration independent.
* @param archivesFormat an ampersand separated list of configuration (for example win32, win32 - zip, x86 & macoxs, carbon, ppc - tar).
* @throws CoreException
* @since 3.0
*/
public void setArchivesFormat(String archivesFormat) throws CoreException {
generator.setArchivesFormat(archivesFormat);
}
/**
* Set the location where to find features, plugins and fragments
* @param baseLocation a comma separated list of paths
*/
public void setBaseLocation(String baseLocation) throws BuildException {
String[] locations = Utils.getArrayFromString(baseLocation);
generator.setPluginPath(locations);
}
@Override
public void execute() throws BuildException {
try {
initializeAntProperties(antProperties);
generator.setImmutableAntProperties(antProperties);
generator.setProduct(getProject().getProperty("product")); //$NON-NLS-1$
generator.setGenerateVersionsList(Boolean.valueOf(getProject().getProperty("generateVersionsList")).booleanValue()); //$NON-NLS-1$
BundleHelper.getDefault().setLog(this);
generator.generate();
} catch (CoreException e) {
throw new BuildException(TaskHelper.statusToString(e.getStatus(), null).toString());
} finally {
BundleHelper.getDefault().setLog(null);
}
}
private void initializeAntProperties(Properties properties) {
properties.setProperty(IBuildPropertiesConstants.PROPERTY_PACKAGER_MODE, "true"); //$NON-NLS-1$
String value = getProject().getProperty(IBuildPropertiesConstants.RESOLVER_DEV_MODE);
if (Boolean.valueOf(value).booleanValue())
properties.put(IBuildPropertiesConstants.RESOLVER_DEV_MODE, "true"); //$NON-NLS-1$
value = getProject().getProperty(IBuildPropertiesConstants.PROPERTY_ALLOW_BINARY_CYCLES);
if (Boolean.valueOf(value).booleanValue())
properties.put(IBuildPropertiesConstants.PROPERTY_ALLOW_BINARY_CYCLES, "true"); //$NON-NLS-1$
ProfileManager manager = new ProfileManager(null, true);
manager.copyEEProfileProperties(getProject().getProperties(), antProperties);
}
/**
* Set the property file containing information about packaging
* @param propertyFile the path to a property file
*/
public void setPackagePropertyFile(String propertyFile) {
generator.setPropertyFile(propertyFile);
}
public void setDeltaPack(boolean value) {
generator.includePlatformIndependent(!value);
generator.groupConfigs(value);
}
public void setFilteredDependencyCheck(boolean value) {
generator.setFilterState(value);
}
public void setNormalize(boolean value) {
if (value)
antProperties.setProperty(IBuildPropertiesConstants.PROPERTY_PACKAGER_AS_NORMALIZER, "true"); //$NON-NLS-1$
else
antProperties.setProperty(IBuildPropertiesConstants.PROPERTY_PACKAGER_AS_NORMALIZER, "false"); //$NON-NLS-1$
}
}