我有一个模块“Module1”,我可以使用下面的命令执行(在项目文件夹中):
现在我有另一个模块“Module2”,我也可以使用相同的上一个命令执行。
我需要在同时运行这两个模块。我怎么能这样做?
答案 0 :(得分:1)
根据您对目标appengine:run
的使用情况,我了解您正在使用本地开发服务器测试您的应用程序。通过查看the documentation for appengine:run
,您可以使用标记 port 在不同的端口中启动两个独立的Development Server实例。
您可以使用如下命令定义该标志:
mvn appengine:run -Dapp.devserver.port=<PORT_NUMBER>
开发服务器中的默认端口号为8080,因此您可以为 Module1 使用端口 8080 ,然后使用其他端口,例如您的 Module2 的 8082 。这样,您可以移动到两个服务所在的目录,并使用不同的端口号运行这两个命令,然后您就可以分别在localhost:8080
和localhost: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
1}}将启动一个包含所有服务的开发服务器。对于Development Server的情况,您可以访问localhost:PORT/_ah/admin
中的Server Admin,然后转到 Modules 选项卡以查找每个正在运行的服务的URL:
我希望这两种选择中的一种(尽管我会选择第二种)对你的用例很有用。