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

部署具有私有依赖关系的云功能

赵佐
2023-03-14

这是我的第一个问题,所以我会尽力做好。

我的团队使用几个常见类部署了多个Java云函数(GCP)(使用maven来管理依赖关系)。现在,这些类在每个函数中都是重复的,必须在每次代码编辑时到处更新。每个云功能都是从源代码部署的。为了避免重复这些类,我将它们打包在一个jar中,在本地一切都运行良好。我在每个云函数pom文件中添加了这个jar作为本地依赖项,并尝试从jar部署,方法是构建一个包含所有依赖项的jar,并在gcloud deploy的--source选项中提供它。这会导致jar上传超时错误。

错误跟踪:

DEBUG: Starting new HTTPS connection (1): storage.googleapis.com:443
DEBUG: Caught socket error, retrying: ('Connection aborted.', timeout('The write operation timed out',))

到目前为止我所尝试的:

  • 使用gcloud config set app/cloud_build_timeout10000设置更高的部署超时,但这似乎不适用于上传步骤,因为它总是在几分钟后失败。
  • 将我的本地依赖项上传到私有nexus存储库以像以前一样从源代码部署我的功能,但当我运行mvn包时,拉取失败,并且我也没有找到任何解决方案:WgonTransporterFactory:不支持的传输协议

详细错误:

[ERROR] Failed to execute goal on project get-content: Could not resolve dependencies for project project:cf:jar:1.0: Failed to collect dependencies at project:pipeline:jar:0.0.1: Failed to read artifact descriptor for project:pipeline:jar:0.0.1: Could not transfer artifact project:pipeline:pom:0.0.1 from/to project-nexus (XXX): Cannot access XXX with type default using the available connector factories: BasicRepositoryConnectorFactory: Cannot access XXX using the registered transporter factories: WagonTransporterFactory: Unsupported transport protocol -> [Help 1]

我认为这是因为我的jar依赖性太大,无法上传,因为我实际上首先错误地部署了jar而没有依赖性(部署成功,但在执行过程中缺少类定义)。我的问题是,如何使用一个本地/私有依赖关系部署我的云功能?

注:

  • 我无法将依赖项上传到公共maven存储库
  • 每个云功能还依赖于公共maven依赖项,这些依赖项似乎太大,无法打包到单个jar中进行部署

共有1个答案

阙弘博
2023-03-14

我通过从Maven切换到Gradle来解决这个问题。问题是Maven将存储库身份验证参数存储在本地文件~/. m2/settings.xml中,Google Build在构建我的Cloud Function以进行部署时无法访问该文件。我切换到Gradle以直接在这个问题之后的gradle.build文件中提供身份验证。

 类似资料:
  • 我想构建这个项目,以便最终的jar在一个jar文件中包含所有依赖项(如果不可能的话,包括从依赖项到jar文件的类),我遵循了线程Including dependencies in a jar with Maven,但它也包含了我在pom中甚至没有提到的依赖项。这是我的POM,它只有两个依赖项。 我想当Final构建时,它包括pom中提到的特定依赖项(以类或jar形式)

  • 我是和的新手。我正在尝试在远程计算机上运行hdfs MapReduce作业。我没有写入/编辑依赖项文件的权限。我想知道是否可以将我的Maven项目传递给我的MapReduce作业。这样,我就不需要SSH进入远程机器并更改maven项目的依赖关系。我将使用包含远程计算机上未包含的所有所需依赖项的JAR来运行我的MapReduce作业。

  • 我有两个网络应用程序,它们部署在同一个野蝇中。这两个webapp都应该共享某些库,这些库不属于野蝇模块的一部分。 为了使部署不依赖于特定的wildfly,我不希望通过wildfly模块系统提供共享库(我知道,用户可以定义模块)。 我的方法是简单地将库和两个webapp放在部署目录中,并在各自的jboss部署结构中引用它们。然而,这失败了。 我试图将该库嵌入到战争中,并通过 由于找不到模块,因此它将

  • 问题内容: 我有一个在后端使用postgres数据库的项目,并且我正在创建一个Dockerfile,该文件可以自动设置数据库的本地开发实例。该数据库包含大量功能,并且这些功能在历史上一直存储在上下文相关的sql文件中,例如,users.sql,companys.sql。这样做很好,因为每当进行更改时,我都可以简单地执行所有视图和删除/重新创建所有函数的相关sql文件。 但是,当尝试在一个新的pos

  • 我在Eclipse4.3中为一个动态web项目使用了ivy托管依赖关系,并且一切正常。在合并包含新模块项目的不同分支之后,Eclipse再也无法创建war了。如果我从部署程序集中移除IvyDependencies,就会创建一个war并再次部署--当然,这个归档丢失了所有依赖项。 在web project中,除了添加项目/模块和依赖项声明之外,没有编译错误,没有提交之间的配置更改。将eclipse配

  • 本文向大家介绍OCaml 没有外部依赖关系的基本示例,包括了OCaml 没有外部依赖关系的基本示例的使用技巧和注意事项,需要的朋友参考一下 示例 如果您的项目没有外部依赖关系,并且具有foo.ml主要入口点,则可以使用以下命令编译字节码版本 要获取本机可执行文件,请运行