До сих пор я использую команду mvn clean compile hibernate3:hbm2java
для запуска моей программы. Есть ли способ объединить эти три цели в пределах одного, например. mvn run
или mvn myapp:run
?
Объедините много целей Maven в одном
Ответ 1
Другим решением, которое полностью отличается от моего другого ответа, будет использование exec-maven-plugin
с целью exec:exec
.
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<executable>mvn</executable>
<arguments>
<argument>clean</argument>
<argument>compile</argument>
<argument>hibernate3:hbm2java</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
И тогда вы просто запускаете его следующим образом:
mvn exec:exec
Таким образом, вы не меняете ни один из других плагинов и не привязаны к каким-либо фазам.
Ответ 2
В соответствии с сайтом Hibernate3 Maven Plugin цель hbm2java
привязывается к фазе generate-sources
по умолчанию.
И обычно вам не нужно очищать проект, вы запускаете инкрементные сборки.
В любом случае, если вы добавите maven-clean-plugin
и hibernate3-maven-plugin
в свой pom.xml
, вы получите все в одной команде.
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>auto-clean</id>
<phase>initialize</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>hbm2java</id>
<goals>
<goal>hbm2java</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Если вы хотите, чтобы hibernate3-maven-plugin
запускался после compile
, тогда просто установите цель в compile
, поскольку он будет всегда запускаться после фаз по умолчанию.
Итак, чтобы запустить все ваши цели с помощью только одной команды:
mvn compile
И если вы по какой-то причине не хотите чистить, просто введите:
mvn compile -Dclean.skip