我正在使用Spring-boot开发应用程序。我需要指定多个主类的原因是,我的程序作为“工具”运行。通过从不同的主类开始,我可以完成任务。我目前以这种方式指定一个主类:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>com.lu.qe.ClassificationService</mainClass>
</configuration>
</plugin>
然后我可以通过在终端上运行来启动我的应用程序:
mvn spring-boot:run
这仅运行“ ClassificationService”主类。我还希望能够运行另一个主类,例如“ ClassificationService_2”。在这种情况下,如何实现呢?可以让'mvn spring-boot:run'作为参数吗?
答案 0 :(得分:1)
我还在开发一个需要多个主类的“工具”。 springboot不支持此需求,但我发现maven parent pom功能完全可以满足我的要求。
步骤1-将pom.xml更改为父pom,将包装类型更改为'pom',父pom如下所示:
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
第2步-创建另一个pom文件,假设为service1.xml,并进行设置,请注意relativePath元素:
<parent>
<groupId>com.example</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>./pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>service1</artifactId>
<version>0.0.1-SNAPSHOT</version>
step3-然后您可以在运行mvn命令时指定pom文件
mvn -f service1.xml spring-boot:run
mvn -f service1.xml clean package
答案 1 :(得分:0)
可以从命令行参数传递主类,但由于将找到多个主类,它将无法运行。
mvn spring-boot:run -Dloader.main=DemoApplication
但是我认为您可以通过定义多个配置文件来进行管理,然后在命令行中可以传递配置文件参数。未选中但应该可以使用。
<profiles>
<profile>
<id>profile1</id>
<properties>
<spring.boot.mainclass>com.MainClass1</spring.boot.mainclass>
</properties>
</profile>
<profile>
<id>profile2</id>
<properties>
<spring.boot.mainclass>com.MainClass2</spring.boot.mainclass>
</properties>
</profile>
</profiles>