如何使用maven运行任何应用程序引擎模块

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

我有一个模块“Module1”,我可以使用下面的命令执行(在项目文件夹中):

  • $ mvn appengine:run

现在我有另一个模块“Module2”,我也可以使用相同的上一个命令执行。

我需要同时运行两个模块。我怎样才能做到这一点?

maven google-app-engine
1个回答
1
投票

根据您对目标appengine:run的使用,我了解您正在使用本地开发服务器测试您的应用程序。通过查看the documentation for appengine:run,您可以使用标志端口在不同的端口中启动两个独立的Development Server实例。

您可以使用以下命令定义该标志:

mvn appengine:run -Dapp.devserver.port=<PORT_NUMBER>

开发服务器中的默认端口号为8080,因此您可以使用端口8080作为Module1,然后使用不同的端口,例如模块2的8082。这样,您可以移动到两个服务所在的目录,并使用不同的端口号运行这两个命令,然后您就可以分别在localhost:8080localhost:8082中访问它们。


更新(可能是更好的解决方案)

实际上,正如in the documentation所述:

如果项目的根目录仅包含您的服务,则可以使用单个Maven命令部署所有这些服务。

这适用于生产环境(App Engine)和开发服务器中的部署。因此,如果您正确配置应用程序,则可以使用单个mvn appengine:run命令在同一个开发服务器实例中启动这两个服务(它们仍将在不同的端口中启动)。

因此,为了配置Java GAE应用程序及其所有服务,您可以遵循相同的想法(与此主题无关​​)migration guide。为此,当您在默认服务的pom.xml文件中配置com.google.cloud.tools»appengine-maven-plugin时,必须添加<services>标记,包括应用程序中的所有服务,从默认值开始服务:

<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>appengine-maven-plugin</artifactId>
  <version>1.3.1</version>
  <configuration>
    <deploy.project>PROJECT_NAME</deploy.project>
    <deploy.version>PROJECT_VERSION</deploy.version>
    <services>
        <!-- Default service -->
        <service>    
          ${project.build.directory}/${project.name}-${project.version}
        </service>
        <!-- One for each additional service -->
        <service>
          ${project.parent.basedir}/SERVICE_NAME/target/SERVICE_ARTIFACT-${project.version}
        </service>
    </services>
  </configuration>
</plugin>

一旦完成,您的应用程序将检测与其相关的所有服务,并且您将能够使用单个Maven命令同时处理所有这些服务,即mvn appengine:deploy将部署所有服务,mvn appengine:run将启动具有所有服务的开发服务器在里面。对于Development Server的情况,您可以访问localhost:PORT/_ah/admin中的Server Admin,然后转到Modules选项卡以查找每个正在运行的服务的URL:

enter image description here

我希望这两种选择中的一种(尽管我会选择第二种)对你的用例很有用。

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