Spring boot Maven 插件 - BOOT-INF 目录导致 AWS Lambda 应用程序失败

2023-12-27

生成的包结构发生了变化(如果提取 uberjar文件)中Spring Boot 2.1.0.RELEASE.

The 1.5.9.发布 jar文件有com, lib, META-INF, and org目录

2.1.0.发布 has a BOOT-INF, META-INF and org目录

基本上来自2.0.0.发布往后 - 所有类和库都在BOOT-INF目录。

由于这个原因 - 当你尝试运行 Spring Boot 项目时亚马逊 Lambda- 它说有一个jar未找到,因为它无法读取新的 Spring Boot Uber jar 结构

我的问题:

  • 在较新版本的 Spring Boot Maven 插件中,是否可以生成与 1.5.9.RELEASE 版本中相同结构的 uber jar?

我尝试过maven-shade-plugin- 但这会导致其他问题。任何帮助表示赞赏。

StackOverflow 的参考链接:Spring Boot Maven 插件 - 无 BOOT-INF 目录 https://stackoverflow.com/questions/43124852/spring-boot-maven-plugin-no-boot-inf-directory


这段 Maven 插件 XML 片段对我来说很有效:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <id>zip-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <finalName>${project.artifactId}-${project.version}</finalName>
                            <descriptors>
                                <descriptor>src${file.separator}assembly${file.separator}bin.xml</descriptor>
                            </descriptors>
                            <attach>false</attach>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

此外,您还需要一个assembly/bin.xml文件包含以下内容:

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
    <id>lambda-package</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <!-- copy runtime dependencies with some exclusions -->
        <fileSet>
            <directory>${project.build.directory}${file.separator}lib</directory>
            <outputDirectory>lib</outputDirectory>
            <excludes>
                <exclude>tomcat-embed*</exclude>
            </excludes>
        </fileSet>
        <!-- copy all classes -->
        <fileSet>
            <directory>${project.build.directory}${file.separator}classes</directory>
            <includes>
                <include>**</include>
            </includes>
            <outputDirectory>${file.separator}</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

请注意,您必须使用生成的.zip文件而不是.jar file.

awslabs 提供了将 Spring Boot 2 与 Lambda 结合使用的完整工作示例:https://github.com/awslabs/aws-serverless-java-container/tree/master/samples/springboot2/pet-store https://github.com/awslabs/aws-serverless-java-container/tree/master/samples/springboot2/pet-store

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring boot Maven 插件 - BOOT-INF 目录导致 AWS Lambda 应用程序失败 的相关文章

随机推荐

  • 如何在 RubyMine 上使用 bundle exec rake?

    我在堆栈溢出中找到了这篇文章rubymine 错误 您已经激活了 rake 10 0 3 但您的 Gemfile 需要 rake 0 9 6 使用bundle exec 可以解决这个问题 https stackoverflow com qu
  • 字符串格式的疯狂问题

    我遇到了一个让我发疯的问题 我的宏中有两个 FOR 循环 每个循环都有一个计数器来跟踪某个过程执行的次数 计数器工作得很好 并且在循环结束时包含正确的数字 我要做的下一件事是将计数格式化为带有前导零的五位数字 我尝试过使用两种不同的方法 见
  • Celery:长期专用的整体任务与短期的多个任务

    在我的解决方案中 我使用分布式任务来监视硬件实例一段时间 例如 10 分钟 当以下情况时我必须做一些事情 我开始这个监控会话 我完成了这个监控会话 可能 在监控会话期间 在整个会话 10 分钟 内运行单个任务并执行所有这些操作是否安全 或者
  • 在过去的 7-8 年里,对 C++ 编程影响最大的是什么?

    我开始用 C 编程 这是我的第一语言 但我已经很多年没有使用它了 C 世界有哪些新的发展 什么是重要的东西 技术 书籍 框架 库等 在过去的 7 8 年里 对 C 编程影响最大的是什么 也许我们可以对每个帖子产生一个影响 这样我们就可以对它
  • IOError: [Errno 22] 无效参数 python write

    我正在写入网络共享 这是写入的代码 while not created fileName join random choice CANDIDATE CHARS for x in range len fullPath os path join
  • 如何修复 FileZilla 的响应:“550 提供的消息不完整。签名未验证。”?

    如何修复 FileZilla 的响应 550 提供的消息不完整 签名未得到验证 这有什么问题吗 这是在我的托管站点中还是在我的 FileZilla 设置中 由于已知错误 Windows IIS 服务器返回此错误 详细信息请参见微软文章修复
  • Visual Studio Code 中的多个格式化程序

    在我的团队中 有些人使用 VS Code 其他人使用 WebStorm 为了调整代码格式 我编写了 VS Code 的扩展 添加了一些缺失的规则 我的计划是与 VS Code 附带的本机格式化程序一起运行我的扩展 我使用 API 提供我的编
  • .NET 高级中 .NET 4.0 和 .NET 4.5 之间的差异

    渴望了解 NET 4 0 和 NET 4 5 在 NET 高级方面的差异以及 ASP NET C 以及这些框架中的差异 NET Framework 4 5 中的新增功能 http www techbubbles com net framew
  • 按多个属性对对象进行排序

    我一直在研究一些需要我按三个属性对对象 软饮料 进行排序的事情 name str colour str and volume int 我进行了研究并找到了分别按名称 颜色和体积对它们进行排序的方法 但是有没有一种方法可以按所有三个对它们进行
  • 如何使用 django 检查 postgresql 数据库中是否存在某些内容?

    我想检查数据库中的行是否已包含特定输入 如果它已经存在 则防止再次添加它 如果不存在 则像平常一样添加它 如何询问数据库是否存在某些内容 而不需要从数据库中提取所有内容进行检查 您可以使用 Entry objects filter name
  • 权限拒绝:打开提供程序 com.android.providers.media.MediaDocumentsProvider

    我试图允许用户访问他的照片库以获取个人资料图片 并将该个人资料图片保存到 SharedPreferences 中 我还有一个导航栏 可以从 SharedPreferences 获取这张图片 我收到以下错误 java lang Securit
  • Android Studio:多个模块的多个 APK

    在 Android 中 有一种方法可以为项目中的所有模块生成签名的 APK 例如 我有以下项目 Project Library Module Module 1 Module 2 Module 3 我想用一个命令为所有 3 个模块生成 APK
  • 如何将字符串解析为 std::map 并验证其格式?

    我想解析一个字符串 0 1 2 3 into a std map 我可以编写一个小函数来解析字符串
  • 如何限制React Native Packager(android)(gradle)中的工作人员数量?

    在 Circleci 上使用 React gradle 构建 Android React Native 项目会耗尽最大 4GB 内存 导致内存压力的问题之一是打包程序启动的 30 多个节点工作进程 每个进程占用近 80MB 请参阅下面的示例
  • 编程错误:关系“django_session”不存在

    将数据库从 sqlite 更改为 postgresql 后出现此错误 我已经更改了所有设置 这是我的设置 DATABASES default ENGINE django db backends postgresql psycopg2 NAM
  • cscope 是否具有搜索历史或搜索查询堆栈功能?

    我通常使用 cscope 从一个方法到另一个方法挖掘超过 4 5 个级别的 c 源代码 并且我必须在这些方法之间来回切换 如何在 cscope 中查看搜索历史记录 这样我就不必记住以前的方法名称 或者如果它是一个堆栈会更好 是的 它确实 帮
  • 将 Stripe 与 Angular 5 结合使用

    我有一个有角度的应用程序 它使用 Stripe 来保存客户支付卡信息 我将此脚本包含在我的index html中 该脚本提供了一个 Stripe 对象 我可以这样使用 问题是 如何从我的 Angular TypeScript 代码访问 St
  • 是否可以通过在matlab中调用c/c++代码来加速matlab绘图?

    一般来说很容易调用mexMatlab 中的文件 用 c c 编写 以加速某些计算 然而 根据我的经验 Matlab 的真正瓶颈是数据绘图 创建句柄非常昂贵 即使您只更新句柄数据 例如 XData YData ZData 这也可能需要很长时间
  • Rails - 使用段落返回输出用户输入?

    我有一个文本区域输入 允许用户输入多个段落 这意味着用户可以输出新行 问题是当我从数据库输出时 它全部缩小为一行 如何将该新行变成 HTML 友好的新行 使其看起来像用户输入文本的方式 thanks Use the 简单格式 http ap
  • Spring boot Maven 插件 - BOOT-INF 目录导致 AWS Lambda 应用程序失败

    生成的包结构发生了变化 如果提取 uberjar文件 中Spring Boot 2 1 0 RELEASE The 1 5 9 发布 jar文件有com lib META INF and org目录 2 1 0 发布 has a BOOT