如何为AWS Lambda Java项目添加带自定义主函数的Maven构建目标
配置Maven双构建目标方案
你可以通过给maven-shade-plugin添加**第二个执行器(execution)**来实现需求,同时给两个执行器设置不同的ID和输出文件名,避免Jar包冲突。具体配置如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.2</version> <configuration> <createDependencyReducedPom>false</createDependencyReducedPom> </configuration> <executions> <!-- 第一个执行器:用于AWS Lambda部署,保留原有逻辑 --> <execution> <id>lambda-deployment</id> <phase>package</phase> <goals> <goal>shade</goal> </goals> <!-- 指定Lambda部署包的输出名称,避免和本地包冲突 --> <configuration> <finalName>${project.build.finalName}-lambda</finalName> </configuration> </execution> <!-- 第二个执行器:用于本地运行,指定自定义main函数 --> <execution> <id>local-runner</id> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <!-- 替换成你的自定义主类全限定名 --> <mainClass>com.yourpackage.YourLocalMainClass</mainClass> <!-- 生成带-local后缀的Jar,方便识别本地运行包 --> <finalName>${project.build.finalName}-local</finalName> </configuration> </execution> </executions> </plugin> </plugins> </build>
使用说明:
- 执行
mvn package会同时生成两个Jar包:一个带-lambda后缀(用于Lambda部署),一个带-local后缀(可直接本地运行)。 - 如果只想单独构建其中一个目标,可以用执行器ID指定:
- 构建Lambda部署包:
mvn shade:shade@lambda-deployment - 构建本地运行包:
mvn shade:shade@local-runner
- 构建Lambda部署包:
- 本地运行时,直接执行
java -jar target/xxx-local.jar即可启动你的自定义main函数。
内容的提问来源于stack exchange,提问作者Frobeniusnorm
相关产品推荐
相关产品推荐

