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

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

景同
2023-03-14

SpringBoot 2.1.0中生成的包结构(如果提取uber jar文件)发生了变化。释放

第1.5.9条。发布jar文件有comlibMETA-INForg目录

2.1.0。RELEASE有一个BOOT-INFMETA-INForg目录

基本上从2.0.0开始。RELEASE Forwards-所有类和库都位于BOOT-INF目录中。

因此,当您尝试在AmazonLambda上运行SpringBoot项目时,它说没有找到一个jar,因为它无法读取新的SpringBoot Uber jar结构

  • 在较新版本的SpringBootMaven插件中,是否可能生成与版本1.5.9相同的结构的uber jar。释放

我尝试了maven-shade-plugin-但这导致了其他问题。任何帮助都很感激。

StackOverflow的参考链接:SpringBootMaven插件-无Boot-INF目录

共有1个答案

牛嘉谊
2023-03-14

这段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>

此外,您还需要一个包含以下内容的汇编/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文件。

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

 类似资料:
  • 我很难让Autowired注释在我的spring boot应用程序中工作。 我也无法在包之外运行main方法。有什么建议吗? UserService类 UserRepository类

  • 我对Spring和Spring Boot相当陌生,并被要求从事一个遗留的Spring Boot项目。我应该在项目中包括Spring Boot提供的一些FailureAnalyzer。根据我遇到的教程(比如这里),所需要做的就是在meta-inf/spring.factors文件中注册几个FailureAnalyzer类。 但是当我构建项目时(使用Maven),在target/meta-inf目录中

  • 是否可以以某种方式配置Spring引导maven插件以包括来自依赖项的资源。 例如,如果在我的spring boot项目中,我有: 在这个JAR文件中有一个属性文件,如 结果1。 但是,当我构建SpringBootJAR时,这个属性文件并没有添加到。包含它的JAR包含在 然而,在我的情况下。我想将的内容提取到Spring BootJAR的引导目录中,这样就可以进行自动配置。 在现实世界中,我试图通

  • 我的目标是建立一个简单的多模块项目,它使用Spring Boot2、Gradle4.x和Vaadin8.x作为UI。Vaadin目前只用于其中的一个子项目,其他的子项目提供服务或只是库。 我从这个非常好的Spring教程开始,它(尽管使用了旧的Gradle语法)产生了一个可以工作的测试项目。它包含一个“Libaray”子项目和一个依赖于前者的“Application”子项目。“bootrun”和“

  • 这里是Android开发者新手。我在MainActivity中使用recyclerview,应用程序不断崩溃。 任何帮助都将受到赞赏! 编辑:对不起,我是新来的。我已经附加了Logcat。和其他xml文件。谢谢 这是我的代码: 列出你的布局。xml: activity_main.xml: } ProductAdapter。java类: } Logcat: 致命异常:主进程:e.wolverine2

  • 我使用mysqld版本5.5.22-0ubuntu1 debian-linux-gnu在x86_64((Ubuntu))下Ubuntu 12.04.1 LTS(GNU/Linux3.2.0-24-通用x86_64)。更新是最新的。 我有两个事件工作正常,然后停电使服务器瘫痪。此后,如果/etc/mysql/my中的event_scheduler=ENABLED,mysql将不会启动。cnf: 我删