Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven: lifecycle phase to run a program?

Tags:

java

maven

I can use Maven to compile and test a program

mvn compile
mvn test

Is there a lifecycle command to simply run the program, or generate a script which will run the program?

like image 873
Mark Harrison Avatar asked Nov 16 '15 20:11

Mark Harrison


2 Answers

If you are asking this question, it means it's unclear to you what the Maven lifecycle really is.

There is no lifecycle command, only a build lifecycle, which is made up of different phases.

So to make it clear: there is a build lifecycle, which is made up of phases, which are made up of plugin goals.

When you are invoking Maven with

mvn compile

You are invoking a build phase. In Maven, there is a list of predefined ordered phases. When you invoke a phase, all of the phase before it are also invoked. Invoking a phase means that you are invoking all of the plugins that are bound to this phase. For the compile case, this means it will, among others, invoke the maven-compiler-plugin wich is bound to the compile phase by default.

So to answer your question strictly: no, there is no lifecycle command to do that.

However, you can configure a plugin in your POM, which will be bound to a certain phase, and invoke that phase. For that, you can refer to @manouti's answer which introduces the exec-maven-plugin.

like image 110
Tunaki Avatar answered Sep 20 '22 15:09

Tunaki


There is no lifecycle phase to do this but you can bind the exec-maven-plugin, specifically the exec:java goal to it. For example, to run the goal on the package phase:

<plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>exec-maven-plugin</artifactId>
     <version>1.4</version>
     <executions>
         <execution>
            <id>run-java</id>
            <phase>package</phase>
            <goals>
                <goal>java</goal>
            </goals>
         </execution>
      </executions>
      <configuration>
           <mainClass>main.Class</mainClass>
      </configuration>
</plugin>
like image 31
M A Avatar answered Sep 20 '22 15:09

M A