2015-09-15 185 views
1

我正在尝试模块化的Eclipse(Mars)安装程序,其中有不同子项目使用的项目中有核心资源。使用Gradle在多个Eclipse WTP项目之间共享资源

core/ 
    src 
    main/ 
     webapp/ 
     js/ 
      subfolder 
      another-core.js 
      core.js 
     css/ 
      default.css 
child/ 
    src/ 
    main/ 
     webapp/ 
     js/ 
      project.js 
     WEB-INF/ 
     project.html 

.settings/org.eclipse.wst.common.component看起来像这样

<?xml version="1.0" encoding="UTF-8"?> 
<project-modules id="moduleCoreId" project-version="2.0"> 
    <wb-module deploy-name="child"> 
     <property name="context-root" value="child"/> 
     <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/> 
     <wb-resource deploy-path="/" source-path="src/main/webapp"/> 
     <wb-resource deploy-path="/" source-path="../core/src/main/webapp/"/> 
    </wb-module> 
</project-modules> 

的Eclipse部署到其wtpwebapps文件夹下面的结构,从核心即只有顶层目录。我期待的CSS /包含default.css和js /同时包含core.js和project.js

child/ 
    css/ <== must have come from core 
    js/ 
    project.js 
    WEB-INF/ 
    project.html 

如果我改变.settings明确列出的文件夹,然后它按预期工作合并文件夹只有在顶层放再次

<wb-resource deploy-path="/" source-path="../core/src/main/webapp/"/> 
<wb-resource deploy-path="/js" source-path="../core/src/main/webapp/js"/> 
<wb-resource deploy-path="/css" source-path="../core/src/main/webapp/css"/> 

wtpwebapps /内容

child/ 
    css/ 
    default.css 
    js/ 
    core.js 
    project.js 
    subfolder/ <== missing another-core.js 
    WEB-INF/ 
    project.html 

反正是有让Eclipse来做到这一点,而无需单独列出所有的文件夹?

的外部WB-资源的另一限制是,当它们重叠,例如包括“JS /子文件夹” “JS /” Eclipse的自动删除“JS /子文件夹”

回答

3

相信只有这样,这可能是通过使用链接的资源,因为它们支持完全递归的源目录,而不像只包含它们顶层的相对路径。然而摇篮似乎有哪里如果包含链接的资源被排除在外的问题如下:

eclipse.project {  
    linkedResource name: 'core', type: '2', location: new File(project(':core').projectDir, "src/main/webapp").absolutePath 
} 
eclipse { 
    wtp { 
     component { 
      resource sourcePath: "/core", deployPath: '/' 
     } 
    } 
} 

然而,有一个withXml挂钩可以用来强制正确的XML到org.eclipse.wst.common.component .xml

eclipse { 
    wtp { 
     component { 
      file { 
       withXml { 
        def node = it.asNode().children()[0] 
        node.appendNode('wb-resource', ["deploy-path": '/', "source-path": '/core']) 
       } 
      } 
     } 
    } 
} 
相关问题