如何为Google Function指定多模块target路径替代GOOGLE_ENTRYPOINT
方案1:直接指定部署jar包路径(最适合多模块场景)
gcloud functions deploy 命令原生支持 --jar 参数直接指定待部署的jar包位置,你不需要修改任何环境变量,在root目录执行以下命令即可完成部署:
gcloud functions deploy post-function \ --entry-point io.micronaut.gcp.function.http.HttpFunction \ --runtime java11 \ --trigger-http \ --jar ./post-function/target/post-function-0.1.0.jar
部署其他子模块函数时,仅需修改函数名和--jar参数对应的子模块jar路径即可。
方案2:指定部署源目录为对应子模块根目录
你也可以通过--source参数指定gcloud的部署工作目录为对应子模块路径,gcloud会自动读取该子模块下的target目录内容:
- 先在root目录执行全量打包,生成所有子模块的构建产物:
mvn package
- 执行部署命令指定子模块为源目录:
gcloud functions deploy post-function \ --entry-point io.micronaut.gcp.function.http.HttpFunction \ --runtime java11 \ --trigger-http \ --source ./post-function
如果需要提升构建效率,也可以单独打包指定子模块:
mvn package -pl post-function -am
其中-pl指定要打包的模块,-am会同时构建该模块依赖的其他模块。
注意事项
GOOGLE_ENTRYPOINT是GCF内部保留的环境变量,确实不允许用户自定义配置,不需要尝试修改该参数。- 每个子模块的pom.xml需要正确配置Micronaut Maven插件或者Maven Shade插件,确保打出的jar是包含所有依赖的fatjar,避免部署后出现类找不到的问题。
内容的提问来源于stack exchange,提问作者Praytic
相关产品推荐
相关产品推荐

