App Engine Java7转Java8执行mvn appengine:update遇206错误
解决App Engine Java8迁移中JSP编译的"文件名或扩展名太长"错误
我之前遇到过完全一样的问题!这是Windows系统的命令行参数长度限制导致的——当你的项目依赖较多,加上App Engine编译JSP时需要加载的类路径太长,就会触发CreateProcess error=206错误,尤其是webapp目录存在JSP文件时,系统会自动触发JSP编译流程,把所有依赖路径拼到命令行里,很容易超出Windows的限制阈值。
给你几个亲测有效的解决方案:
1. 缩短Maven本地仓库路径
默认的Maven仓库路径通常在用户目录下,比如你的C:\Users\PRAVEE~1.KUM\.m2,本身已经有一定长度。你可以把仓库移到更短的路径下,比如D:\m2:
- 找到
C:\Users\你的用户名\.m2目录下的settings.xml,添加或修改<localRepository>标签:<localRepository>D:\m2</localRepository> - 执行
mvn clean install让依赖重新下载到新路径,再尝试mvn appengine:update
2. 用Maven插件精简依赖
通过maven-dependency-plugin分析并移除不必要的传递依赖,减少Classpath里的条目:
- 在pom.xml中添加插件配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.6.0</version> <executions> <execution> <phase>install</phase> <goals> <goal>analyze-deprecated</goal> <goal>analyze-unused</goal> </goals> </execution> </executions> </plugin> </plugins> </build> - 根据插件分析结果,在对应依赖中添加
<exclusions>标签排除无用依赖,大幅缩短Classpath长度
3. 指定短路径的JSP编译临时目录
把JSP编译的临时文件目录改到路径更短的位置,也能缓解问题:
- 在
appengine-maven-plugin中添加配置:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.4.2</version> <!-- 替换为你当前使用的插件版本 --> <configuration> <jvmFlags> <jvmFlag>-Djava.io.tmpdir=D:\temp</jvmFlag> </jvmFlags> </configuration> </plugin> - 确保
D:\temp目录已创建,这样编译JSP时生成的临时文件路径会更短
4. 临时绕过JSP编译(紧急部署用)
如果需要紧急上线,可以先把webapp目录下的JSP文件移到项目外,部署完成后再通过App Engine控制台的版本文件管理上传JSP文件,不过这只是临时方案,建议优先从根源解决路径过长问题
补充:这个问题是Windows特有的,Linux/macOS对命令行长度的限制宽松很多,有条件的话在这类环境下部署能直接避开问题
内容的提问来源于stack exchange,提问作者Praveen Hb
相关产品推荐
相关产品推荐

