Difference between Maven source plugin jar and jar-no-fork goal?
jar, maven, maven-plugin
Solution
My interpretation: the `jar` goal is meant to be run from the command line (`mvn source:jar`), the `jar-no-fork` is meant to be bound to the lifecycle.
If you look at the docs for the `jar` goal the key phrase is "Invokes the execution of the lifecycle phase generate-sources prior to executing itself." If you configure your POM to run the `source:jar` goal as part of the lifecycle, Maven will re-run all of the goals bound to `generate-sources` and its predecessors. If you have many plugin goals bound to the validate or initialize phases all of those will run twice, lengthening the time of your build.
In contrast, `jar-no-fork` is what you attach to the build lifecycle because it expects to be bound to a phase somewhere after `generate-sources` and will not run the bound goals again.
I have verified this behavior by running Maven 3 with `-X` and reviewing the plugin executions that run.
Problem
Could you give me a detail explanation about the difference between jar and jar-no-fork goal? I see it from official site, but I can not get a clear idea for this.