Steve Hannah <st...@weblite.ca> wrote:

> VSCode does let you execute phases,
> but the "phase" model doesn't work well when you are working on
> desktop application.  You expect there to be an action to "run" the app and
> a separate action to "build" the app.

I don’t generally work on desktop application projects, but I don’t think it 
should be fundamentally different from working on web server applications.

The Maven build lifecycle, like the name suggests, is aimed at building 
projects. While a plugin goal might let you run something there is no specific 
build lifecycle phase for that. I generally let my IDE do the running, instead 
of involving Maven.

But you can pass both a phase and a plugin goal to Maven to run something, for 
instance like this:

    ./mvnw package spring-boot:run

Or like this:

    ./mvnw verify exec:java

I don’t know about VSCode, but an IDE should generally know when to build a 
project (via Maven or otherwise) when you run it. Running the built project can 
also be done without Maven, which is generally what I do when not using an IDE:

    Build: ./mvnw verify
    Run: java -jar target/my-app-1.0.0-SNAPSHOT.jar

>    Neither of those are in the
> lifecycle.  What I typically do is bind the "run" to the lifecycle so that
> it will happen if I do `mvn verify`.

Maven let’s you do that of course, but semantically that is a bit of a hack, 
because the verify phase’s role is to ‘run any checks on results of integration 
tests to ensure quality criteria are met’ [0].

By the way, Maven let’s you define a default goal [1], which can also include 
phases and you could set to something like ‘verify exec:java’, so that when you 
run Maven without specifying any specific phases or goals, that will be 
executed. Maybe that would be helpful for you?

Nils.

[0]: 
https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
[1] https://maven.apache.org/pom.html#Build_Element

Reply via email to