2015-09-15 2 views
1

Я пытаюсь установить модульную настройку Eclipse (Mars), где есть основные ресурсы в одном проекте, используемом различными дочерними проектами.Совместное использование ресурсов между несколькими проектами Eclipse WTP с Gradle

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 

есть в любом случае, чтобы получить затмение сделать это без перечисления всех папок по отдельности?

Другим ограничением внешних ШП-ресурсов является то, что, когда они перекрывают друг друга, например, в том числе «Js/подпапке» и «JS /» Eclipse автоматически удаляет «JS/подпапка»

ответ

3

Единственный способ, которым я верю это возможно благодаря использованию связанных ресурсов, поскольку они поддерживают полностью рекурсивные исходные каталоги, в отличие от относительных путей, которые включают только их верхний уровень. Однако 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']) 
       } 
      } 
     } 
    } 
} 
Смежные вопросы