Search code examples
javaeclipseanteclipse-wtp

Export war from headless Eclipse


How do I export a WAR file from an Eclipse .web project programmatically with Java?

I have big problems with war ant task due to complex project structure( ProjectX.web has a dependency from ProjectX.java) and i'm very confused by the WebComponentExportWizard implementation.

Is there any WTP API to use? (like this old version http://www.eclipse.org/webtools/jst/components/j2ee/api/j2ee_operationsAPI.html )


Solution

  • After some heavy fight i manage to obtain the war file trough this method:

    @SuppressWarnings("restriction")
    public static void exportWar(IProject webProject) throws CoreException {
        WebComponentExportDataModelProvider modelProvider = new WebComponentExportDataModelProvider();
    
        IDataModel dataModel = DataModelFactory.createDataModel(modelProvider);
        dataModel.setBooleanProperty(IJ2EEComponentExportDataModelProperties.EXPORT_SOURCE_FILES, false);
        dataModel.setBooleanProperty(IJ2EEComponentExportDataModelProperties.OVERWRITE_EXISTING, true);
        dataModel.setStringProperty(IJ2EEComponentExportDataModelProperties.PROJECT_NAME, webProject.getName());
    
        dataModel.setStringProperty(IJ2EEComponentExportDataModelProperties.ARCHIVE_DESTINATION, webProject
                .getLocation().append(webProject.getName()).addFileExtension("war").toOSString());
        dataModel.setProperty(
                IJ2EEComponentExportDataModelProperties.COMPONENT,
                ComponentCore.createComponent(webProject));
    
        IDataModelOperation modelOperation = dataModel.getDefaultOperation();
        try {
            log.debug("Start  the export war operation");
            modelOperation.execute(null, null);
        }
        catch (ExecutionException e) {
            log.error("Error when exporting .war project", e);
        }
    }