使用Gradle在多个Eclipse WTP项目之间共享资源

使用Gradle在多个Eclipse WTP项目之间共享资源,eclipse,gradle,eclipse-wtp,Eclipse,Gradle,Eclipse Wtp,我正在尝试一个模块化的Eclipse(Mars)设置,其中一个项目中有核心资源,由不同的子项目使用 core/ src main/ webapp/ js/ subfolder another-core.js core.js css/ default.css child/ src/ main/ webapp/ js/

我正在尝试一个模块化的Eclipse(Mars)设置,其中一个项目中有核心资源,由不同的子项目使用

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文件夹中,即仅部署core中的顶级目录。我希望css/包含default.css,js/同时包含core.js和project.js

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

css/我认为唯一可行的方法是使用链接的资源,因为这些资源支持完全递归的源目录,而相对路径只包含它们的顶级目录。但是,Gradle似乎存在一个问题,即链接资源被排除在外,如果包括以下内容:

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'])
                }
            }
        }
    }
}
eclipse.project {    
    linkedResource name: 'core', type: '2', location: new File(project(':core').projectDir, "src/main/webapp").absolutePath
}
eclipse {
    wtp {
        component {
            resource sourcePath: "/core", deployPath: '/'
        }
    }
}
eclipse {
    wtp {
        component {
            file {
                withXml {
                    def node = it.asNode().children()[0]
                    node.appendNode('wb-resource', ["deploy-path": '/', "source-path": '/core'])
                }
            }
        }
    }
}