带有额外 main 的 Java AWS Lambda 项目

问题描述 投票:0回答:1

我们有一个适用于 AWS Lambda 的 Java 项目,可以根据请求执行不同的评估。 到目前为止,效果很好,但对于某些评估,我们希望选择在本地计算机上手动启动它们。

为此,我们希望有 2 个 Maven 构建目标:

  • 一个用于 AWS Lambda
  • 用于某个类中的自定义主函数

当前的 Maven 构建配置如下所示(我们使用阴影构建可部署的 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>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
 </plugins>
</build>

我如何为指定的主函数添加第二个目标?

java maven aws-lambda maven-shade-plugin
1个回答
0
投票

我只需将 exec-maven-plugin 添加到您的构建中。比如:

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.4.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.1.1</version>
            <configuration>
                <mainClass>your.package.MainClass</mainClass>
            </configuration>
        </plugin>
    </plugins>

在这种情况下,您可以使用

public static void main(String[] argv)
在代码中运行
mvn exec:java -Dexec.args="some set of args"
。我会有一个通用的“工作”对象/类来完成您最终想要的事情。您的 Lambda 处理程序可以调用此工作程序类,或者您的
main()
也可以。

© www.soinside.com 2019 - 2024. All rights reserved.