【问题标题】:How to run multiple modules separately in multi-module maven project如何在多模块maven项目中分别运行多个模块
【发布时间】:2016-08-08 15:26:20
【问题描述】:

我创建了一个多模块 maven 项目,每个模块都是 spring boot 应用程序。我想在父项目下运行每个模块。

例如:

Parent P -- module A -- src -- pom.xml -- module B --src --pom.xml --pom.xml

我现在正在做的是在命令提示符下从父 pom 执行 mvn clean install,然后导航到每个模块的目标文件夹并使用 java - jar 执行每个 jar

我想先运行模块 A,然后一次性运行模块 B。这可能吗?如何在maven中做到这一点。

【问题讨论】:

    标签: java spring maven spring-boot


    【解决方案1】:

    有两种方法可以实现您想要做的事情:

    脚本

    编写一个脚本来构建和启动每个模块。我已经包含了一个 Windows 批处理脚本作为示例。

    ma​​ven.bat

    mvn clean package
    start java -jar module-a/target/module-a-0.0.1.BUILD-SNAPSHOT.jar
    start java -jar module-b/target/module-b-0.0.1.BUILD-SNAPSHOT.jar
    

    Docker

    使用 Docker,更具体地说,docker-compose 使用单个命令启动所有模块:

    docker-compose up
    

    docker-compose.yml

    modulea:
     image: foobar/modulea
     ports:
      - "8080:8080"
     links:
      - moduleb
     environment:
      - SPRING_PROFILES_ACTIVE=local
    moduleb:
     image: foobar/moduleb
     ports:
      - "8081:8080"
     links:
      - modulea
     environment:
      - SPRING_PROFILES_ACTIVE=local
    

    有关如何使用 Docker 和 docker-compose 的更多详细信息,请访问文档链接。

    【讨论】:

      【解决方案2】:

      Parent P,您可以使用单个内联命令来实现您想要的(我将它分成两行只是为了阅读目的):

      nohup mvn spring-boot:run -pl module-A -Dserver.port=8090 &
      nohup mvn spring-boot:run -pl module-B -Dserver.port=8091 &
      

      上述命令允许在后台运行两个 Spring Boot 应用程序模块,每个模块都在其专用端口上。

      nohup 命令的输出,即 Spring Boot 启动日志,会发送到nohup.out,放在Parent P 目录下。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-12
        • 2015-05-22
        • 2011-06-16
        相关资源
        最近更新 更多