繁体   English   中英

从无头的Eclipse导出战争

[英]Export war from headless Eclipse

如何使用Java以编程方式从Eclipse .web项目中导出WAR文件?

由于复杂的项目结构(ProjectX.web具有ProjectX.java的依赖项),我在蚁任务方面存在很大问题,并且WebComponentExportWizard实现使我感到非常困惑。

是否有任何WTP API可以使用? (例如此旧版本http://www.eclipse.org/webtools/jst/components/j2ee/api/j2ee_operationsAPI.html

经过一番激烈的战斗后,我设法通过这种方法获得了战争档案:

@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);
    }
}

我像下面那样使用org.eclipse.wst.server.core.util.PublishHelper.publishZip() ,它对我有用。

IPath war = workDirectory.append("app.war");
PublishHelper publishHelper = new PublishHelper(null);
J2EEFlexProjDeployable deployable =
        new J2EEFlexProjDeployable(project, ComponentCore.createComponent(project));
publishHelper.publishZip(deployable.members(), war, null);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM