Можно ли выполнить два разных Maven exec-Maven-плагина в одном POM
Я выполняю следующий код с помощью mvn exec:java com.mycompany.FooServer.
Я хотел бы добавить еще один сервер, который я могу выполнить как mvn exec:java com.mycompany.BarServer.
как это сделать в одном файле pom?
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.mycompany.FooServer</mainClass>
</configuration>
</plugin>
</build>
6 ответов:
попробуйте это. Вы можете иметь более одного исполнения под исполнениями. Все, что вам нужно сделать, это переместить элемент конфигурации под расстрел. Плагин имеет конфигурацию, но каждое выполнение также может иметь отдельный элемент конфигурации.
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <id>first-execution</id> <goals> <goal>java</goal> </goals> <configuration> <mainClass>com.mycompany.FooServer</mainClass> </configuration> </execution> <execution> <id>second-execution</id> <goals> <goal>java</goal> </goals> <configuration> <mainClass>com.mycompany.BarServer</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build>С Maven 3.3.1 и выше, вы можете запустить выполнение по его идентификатору с помощью
mvn exec:java@idв этом случае команды будут
mvn exec:java@first-executionиmvn exec:java@second-execution. Смотрите ответ для более подробной информации.
@tieTYT: вы можете выбрать выполнение по id, используя два разных профиля:
mvn test-Pmanager
mvn test-Pproxy
<profiles> <profile> <id>proxy</id> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>test</phase> <goals> <goal>java</goal> </goals> <configuration> <mainClass>pt.inesc.proxy.Proxy</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>manager</id> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>test</phase> <goals> <goal>java</goal> </goals> <configuration> <mainClass>pt.inesc.manager.Manager</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
для меня в том числе конфигурации в блоке выполнения не работает и maven жаловался на основной класс не устанавливается. Но вдохновленный ответом Дарио я бы ответил на этот вопрос следующим образом:
<profiles> <profile> <id>foo</id> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <mainClass>com.mycompany.FooServer</mainClass> </configuration> </plugin> </plugins> </build> </profile> <profile> <id>bar</id> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <mainClass>com.mycompany.BarServer</mainClass> </configuration> </plugin> </plugins> </build> </profile> </profiles>который затем позволяет запускать один или другой сервер с помощью:
mvn exec:java -Pfooили
mvn exec:java -Pbarспасибо,
боюсь, что то, что вы хотите не возможно. Я не мог найти способ вызвать ту же цель exec-maven-plugin напрямую (
mvn exec:java) с различными конфигурациями .файл пом.сказал, что однако вы можете иметь несколько исполнений exec-maven-plugin. Дело в том, что вы не можете назвать цели напрямую. Вы должны использовать несколько исполнений и привязать их к определенным фазам сборки.
вы также можете использовать следующее решение, которое подходит мне. Вы все еще можете вызвать одну цель непосредственно с ее конфигурацией.пом:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.3.2</version> <executions> <execution> <id>Acceptance Tests</id> <phase>integration-test</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>pybot</executable> <arguments> <!--...--> </arguments> </configuration> </execution> </executions> <configuration> <mainClass>pt.jandias.someapp.persistence.SchemaGenerator</mainClass> <arguments> <!--...--> </arguments> </configuration> </plugin>можно использовать
mvn exec:javaиmvn integration-testпо желанию.
Я нашел решение:
I put <configuration> in <execution>вы можете использовать mvn clean test -Pfoo,бар
<profiles> <profile> <id>foo</id> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.3.2</version> <executions> <execution> <id>CountContinusIntegr-execution</id> <phase>compile</phase> <goals> <goal>java</goal> </goals> <configuration> <mainClass>com.mycompany.FooServer</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>bar</id> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.3.2</version> <executions> <execution> <id>CountContinusIntegr-execution</id> <phase>compile</phase> <goals> <goal>java</goal> </goals> <configuration> <mainClass>com.mycompany.BarServer</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>