当前位置: 首页 > 知识库问答 >
问题:

添加wb-resource的gradle eclipse-wtp插件从部署中删除webAppDir

雍阳
2023-03-14
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'

webAppDirName =  'WebContent'

configurations{
    common
}

eclipse{
    wtp {
        facet{
            facet name: 'jst.web', version: '3.0'
            facet name: 'java', version: '1.7'
        }
    }
}

war{
    from ({zipTree(configurations.common.singleFile)}){
        into('common')
    }
}   

dependencies {
    common "group:artifact:version:common@jar"
}

Eclipse没有按照war{}部分的规定提取configurations.common,所以我不得不稍微修改一下脚本:

eclipse{
        wtp{
            facet{
                ...
            }
            component{
                resource sourcePath: "build/common", deployPath: "/common"
            }
        }
}

task extractCommon(type:Copy){
    from {
        configurations.common.collect{ zipTree(it) }
    }
    exclude 'META-INF/**'
    into "$buildDir/common"
}

eclipseClasspath.dependsOn(extractCommon)

这样,在重新创建eclipse项目文件和设置之前就提取了依赖JAR,但不幸的是,webappdirname从eclipse项目的部署程序集设置中消失了。

因此,另一个变通方法是:

eclipse{
        wtp{
            facet{
                ...
            }
            component{
                resource sourcePath: "build/common", deployPath: "/common"
                resource sourcePath: "$webAppDirName", deployPath: "/"
            }
        }
}
  1. 从Eclipse进行部署时,遵循war{}块中定义的规定行为(在创建web应用程序之前提取一些JAR)。
  2. 以增量方式定义资源而不从部署中清除webappdirname文件夹

编辑:让我重新表述一下这个问题:

如果我有一个具有典型目录结构war项目

src
 main
  java
  webapp
generated_source
apply plugin:'java'
apply plugin:'war'
apply plugin:'eclipse-wtp'

eclipse.wtp.component.resource(sourcePath:'generated_source', deployPath:'/WEB-INF')
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="2.0">
    <wb-module deploy-name="gradleissue">
        <property name="context-root" value="gradleissue"/>
        <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="/WEB-INF/" source-path="generated_source"/>
    </wb-module>
</project-modules>
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="2.0">
    <wb-module deploy-name="gradleissue">
        <property name="context-root" value="gradleissue"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/" source-path="generated_source"/>
    </wb-module>
</project-modules>

/src/main/webapp文件夹从部署程序集中消失。我有种不好的预感,这不是它应该做的。我还检查了https://github.com/gradle/gradle/blob/master/subprojects/ide/src/test/groovy/org/gradle/plugins/ide/eclipse/eclipsewtpplugintest.groovy中的测试,看起来缺少这个案例(我不是groovy爱好者)。

共有1个答案

柴兴贤
2023-03-14

是否将“generated_source”目录添加到源集中?我有类似的项目设置,但我以不同的方式组织生成的源目录:

src/main
  java
  generatedJava
  webapp

那么您只需要将generatedJava目录添加到源集中:

sourceSets.main.java {
        // added additional source folder for generated classes
        srcDir "${rootDir}/src/main/generatedJava"
}

这将导致预期的eclipse wtp配置:

<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="2.0">
    <wb-module deploy-name="myproject">
        <property name="context-root" value="myproject"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/generatedJava"/>
        <wb-resource deploy-path="/" source-path="src/main/webapp"/>
    </wb-module>
</project-modules>
 类似资料:
  • 我在kivy中添加或删除小部件时遇到一些困难。情况就是这样: 主窗体应该包含三个小部件中的两个,即Widget1、Widget2和Widget3。按下Widget1的按钮,Widget2应该被删除,Widget3应该出现。 这是main.py文件: 这是.kv文件: 在类表单中,我检查Widgets1和2是否为该类的子类: 我得到: 因此,当我尝试删除现有子项并添加新子项时,我得到: 有人能帮忙吗

  • 问题内容: 我的网站运行的脚本名为-> WSS壁纸脚本 我的问题 ->我一直在尝试强制删除或在URL末尾添加斜杠,以防止重复的内容并清理URL。 我尝试了各种尝试,尝试了所有可以想到的东西,并尝试从Interweb进行加载,但是还没有运气!这可能是一个快速解决方案,但是我已经看了太多了,因此我可能看不到一些显而易见的东西。 因此,我向您提供所有代码: 问题答案: 在该行下方,添加: 实施不拖尾的斜

  • 我想从外部源向fullcalendar jquery插件添加一个事件。我需要事件标题;开始日期和结束日期。我读到回调函数是在您将外部源放到日历上时调用的。这将报告警报中的开始日期。选项显示事件的标题。此警报在回调后显示。这是代码: 如何从函数的回调中获取开始日期值?

  • ADDING AND REMOVING SOFTWARE Linux 或任何操作系统中最基本的任务之一便是添加和删除软件。您经常需要安装发行版中没有附带的软件,或者删除不需要的软件,这样就不会占用硬盘空间。 有些软件安装需要依赖其他软件才能运行,有时您会发现您可以在软件包安装过程中一次性下载所需的所有软件,软件包是一组文件(通常是库和其他依赖项),您需要这些文件才能使软件成功运行。当您安装一个包时

  • 我有,Eclipse多项目,基于Gradle,Tomcat 7 当我调试时,debugger给出ClassNotFoundException异常,因此由于某种原因,Tomcat无法看到来自“common”项目的依赖项。 有什么建议可以解决这个问题吗?

  • 问题内容: 不知何故,我的应用程序中安装了许多cordova插件,因此,它需要访问几乎所有内容-从我的联系人到当前位置(即使此应用程序不需要此功能)。 这个应用程序是通过jenkins构建的,据我了解,一种解决方案是用单个命令删除每个插件,因此它将像: 但是有时它会显示一些错误,而对于詹金斯来说,任何错误都会导致构建失败,因此是否有任何命令可以删除所有插件?(在安装过程中,需要任何应用程序才能正常