如何在Java中以编程方式将动态Web项目添加到EAR?

时间:2011-04-26 14:43:39

标签: eclipse eclipse-plugin

我创建了一个动态Web项目。我想将此添加到耳朵项目中。我希望以编程方式创建此EAR项目,并为其添加一些其他方面,并将动态Web项目添加到该EAR。

我现在所做的是,创建一个Web项目并添加到属性下面以将其添加到EAR项目中。

  

iDataModel.setBooleanProperty(IWebFacetInstallDataModelProperties.ADD_TO_EAR   ,TRUE);

这将使用默认设置创建EAR。但我不想要这个。我想创建EAR项目并为其添加更多IBM方面。所以我创建了如下的EAR。

  

IDataModel earModel =   DataModelFactory.createDataModel(新   EARFacetProjectCreationDataModelProvider());   earModel.setProperty(IFacetDataModelProperties.FACET_PROJECT_NAME,   projName);   earModel.getDefaultOperation()。执行(   monitor,null);

有了这个,我可以为这个EAR项目添加一些额外的方面。但我不知道如何将Web项目添加到此EAR。

如果有人遇到这种情况,请帮助我。

1 个答案:

答案 0 :(得分:0)

我最终得到了这个。通过这种方式,我们可以选择要以编程方式添加到一个或多个EAR项目的Web和Java项目的愿望列表。

  

public void createEARProject(IProject   iEARProj,IProject iWebProj,   IProgressMonitor监视器)抛出   ExecutionException,CoreException {

     

IProjectDescription earProjectDesription =   。ResourcesPlugin.getWorkspace()newProjectDescription(iEARProj.getName());         iEARProj.create(earProjectDesription,   监控); iEARProj.open(监视器);

     

最终的IFacetedProject   earFacetedProject =   ProjectFacetsManager.create(iEARProj,   是的,监视器); IActionDefinition   earInstallAction =   EARFacetUtils.EAR_14.getActionDefinition(Collections.singleton(EARFacetUtils.EAR_14)   IFacetedProject.Action.Type.INSTALL);         IDataModel earConfig =(IDataModel)   earInstallAction.createConfigObject(EARFacetUtils.EAR_14,   iEARProj.getName());

     

earConfig.setProperty(IEarFacetInstallDataModelProperties.J2EE_PROJECTS_LIST,   Arrays.asList(新   的IProject [] {iWebProj}));   earConfig.setProperty(IEarFacetInstallDataModelProperties.JAVA_PROJECT_LIST,   Collections.EMPTY_LIST);   earConfig.setBooleanProperty(IFacetDataModelProperties.SHOULD_EXECUTE,   Boolean.TRUE);

     

IDataModel master =   DataModelFactory.createDataModel(新   EARFacetProjectCreationDataModelProvider());   master.setStringProperty(IFacetDataModelProperties.FACET_PROJECT_NAME,   earConfig.getStringProperty(IFacetDataModelProperties.FACET_PROJECT_NAME));   master.setProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP,   Collections.singletonMap(EARFacetUtils.EAR_FACET.getId()   earConfig));   master.setProperty(IFacetProjectCreationDataModelProperties.FACET_ACTION_MAP,   Collections.EMPTY_MAP);   master.setProperty(FacetProjectCreationDataModelProvider.REQUIRED_FACETS_COLLECTION,   Collections.singletonList(EARFacetUtils.EAR_FACET));

     

earConfig.setProperty(FacetInstallDataModelProvider.MASTER_PROJECT_DM,   主);

     

earFacetedProject.installProjectFacet(EARFacetUtils.EAR_14,   earConfig,monitor);   earFacetedProject.setFixedProjectFacets(Collections.singleton(EARFacetUtils.EAR_FACET));

     

}

希望如果有人尝试我尝试的方式,这会有所帮助。