Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gradle-复制到WEB-INF的JAR被GoogleAppEngine覆盖了?_Java_Google App Engine_Gradle_Web Inf - Fatal编程技术网

Java Gradle-复制到WEB-INF的JAR被GoogleAppEngine覆盖了?

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文件夹将被覆盖

我目前正在使用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文件夹将被覆盖,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
。是的,应该自动添加罐子。你可能误解了什么。