是否可以在pom文件中指定多个主类?

时间:2018-09-26 02:43:12

标签: maven spring-boot

我正在使用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'作为参数吗?

2 个答案:

答案 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>