Можно ли указать несколько основных классов в файле pom? - PullRequest
0 голосов
/ 26 сентября 2018

Я использую 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 голосов
/ 06 марта 2019

Я также разрабатываю «инструмент», который требует нескольких основных классов.springboot не поддерживает это требование, но я обнаружил, что функция родительского pom maven точно соответствует моему требованию.

шаг 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, и установите его, обратите внимание на элементlativePath:

<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 - тогда вы можете указать файл pom при запуске команды mvn

mvn -f service1.xml spring-boot:run

mvn -f service1.xml clean package
0 голосов
/ 27 сентября 2018

Из аргумента командной строки можно передать главный класс, но он не будет работать, потому что будет найдено несколько основных классов.

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...