Java Gradle-复制到WEB-INF的JAR被GoogleAppEngine覆盖了?
我目前正在使用Gradle编译Java代码并将其上传到GoogleAppEngine。它在本地编译得很好,问题是代码所依赖的JAR库不在GAE上的“WEB-INF”文件夹中 我目前正在使用War将JAR文件复制到WEB-INF,使用:Java Gradle-复制到WEB-INF的JAR被GoogleAppEngine覆盖了?,java,google-app-engine,gradle,web-inf,Java,Google App Engine,Gradle,Web Inf,我目前正在使用Gradle编译Java代码并将其上传到GoogleAppEngine。它在本地编译得很好,问题是代码所依赖的JAR库不在GAE上的“WEB-INF”文件夹中 我目前正在使用War将JAR文件复制到WEB-INF,使用: copy { from 'libs' into 'build/exploded-war/WEB-INF' include '**/*.jar' } 问题是,如果它在“gaeUpdate”命令之前执行此操作,那么WEB-INF文件夹将被覆盖
copy {
from 'libs'
into 'build/exploded-war/WEB-INF'
include '**/*.jar'
}
问题是,如果它在“gaeUpdate”命令之前执行此操作,那么WEB-INF文件夹将被覆盖,JAR将被删除,因此不会上载。如果在gaeUpdate命令之后执行此操作,则为时已晚,文件已上载到服务器,因此不会上载
重要的是要注意,如果我在控制台中输入“gradle”而不输入“gaeUpdate”,那么jar不会被删除,只有在添加“gaeUpdate”时才会被删除
有没有办法在创建“build”文件夹后但在服务器上载之前上载文件?Jar文件会自动放入
WEB-INF
,因此可能您没有正确声明依赖项。向爆炸战争中添加某些内容并不会将其添加到战争档案中。@PeterNiederwieser感谢您的回复,非常感谢!在我的依赖项部分,我有:“compilefiles('./libs/mylibrary1.jar')compilefiles('./libs/mylibrary2.jar')”这是正确的路径,因为控制台没有抛出任何“NoClassDefFound”错误,如果找不到库,它显然会抛出这些错误(只有在我尝试在GAE上运行它时才会抛出这个错误)。我真的很困惑,为什么我的预编译本地jar没有被包含,或者为什么(在我手动包含它们之后)它们只有在调用“gaeUpdate”时才会被删除。任何指点都将不胜感激!很难说。我从来没有遇到过这个问题,即使从文件系统中包含jar也是如此。“或者为什么(在我手动包含它们之后)只有在调用“gaeUpdate”时才会删除它们。”正如我所说,向爆炸战争中添加罐子不会将它们添加到战争档案中。也许gaeUpdate
使用后者。此外,您的问题还不清楚您将copy
块放在哪里。除非用任务操作包装此块,否则它将在配置阶段执行,在执行任何任务之前。尝试将copy
替换为war
@PeterNiederwieser再次感谢!“copy”块位于war内部的一个任务操作中,我在命令行中执行该操作(即,我调用gradle AddJar gaeUpdate)。关于你的第一点,你是说如果我在一个预先存在的Jar上调用“compile files(…)”,那么它应该自动添加到WEB-INF?将copy
块移动到顶层,用war
替换copy
,然后只调用gradle gaeUpdate
。是的,应该自动添加罐子。你可能误解了什么。