maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Manfred Moser" <>
Subject Re: Why is "mvn validate compile" different from "mvn validate; mvn compile"?
Date Thu, 07 Nov 2013 21:42:28 GMT
Ultimately Maven is designed to get components from a repo manager and
publish them back to the repo manager. Using it without a repository
managers is like saying you want to drive a car but it cant have an engine
or wheels.


> I have never used Ant, so I do nkt have the urge to script my build. I
> have also read the blog post you mentioned. The JARs I was trying to
> dynamically download from. "non-Maven" URL are, as I said
>   - not available on Central (I suggested it to the author, but he refused
>     and keeps committing all dependencies to his SCM)
>   - not available on any other public Maven repo
>   - not even built with Maven.
> Our company even has an internal Nexus, but
>   - I kinda dislike manually uploading external JARs there
>   - I was in a situation where I did not have access to that Nexus
> instance
>     and wondered if it was not somehow possible to bootstrap external
>     JARs directly with Maven. Thus, I ended up using the combination of
>     download-maven-plugin and maven-install-plugin, both tied to the first
>     phase available, named validate. This works nicely if I call validate
>     separately, but I wanted to do it Maven style in one call. I think it
> is a
>     design flaw in Maven that it behaves differently for validate
> depending on
>     which phase has been called. I think the principle of least surprise
> makes
>     users expect a different (consistent) behaviour. I do not see any
> problems
>     In an approach which executes validate before checking the downloads
>     needed for compile.
> Having said that and further explained my situation, do you have any
> suggestion how to solve this problem in a clean, canonical Maven way,
> given a single condition: no private Nexus or external Maven repo is
> available and I want one-stop shopping and clean bootstrapping right from
> Maven. I think this is a simple enough and understandable requirement. It
> is actually what I have started using Maven for.
>> Am 07.11.2013 um 21:23 schrieb Doug Douglass <>:
>> On Thu, Nov 7, 2013 at 12:41 PM, Alexander Kriegisch <
>>> wrote:
>>> Only "mvn compile" yields the exact same result as "mvn validate
>>> compile",
>>> I just did it like this explicitly to make a point and show clearly
>>> what
>>> hapens. So again: Why, pray tell, does my two-phase build work if first
>>> I
>>> only do "mvn validate" and then "mvn compile", but not with only "mvn
>>> compile"? The question is still unanswered. Two people told me I made a
>>> mistake but did not explain which one and where the different behaviour
>>> comes from.
>> You're right, I didn't answer your original question. The different is
>> because "mvn validate compile" and/or "mvn compile" is a single
>> invocation
>> of maven and dependencies are resolved once (by default, w/o any other
>> plugins/configuration). "mvn validate; mvn compile" are 2 separate
>> invocations of maven; the first one does your "download external,
>> non-mavenised" business, which makes those dependencies available for
>> the
>> second.
>> I still suggest you read Steven's post as you're question/problem
>> indicates
>> you're heading down the not-uncommon path of trying to script your build
>> (like we all did in the Ant days) vs. giving into The Maven Way. There's
>> lots of similar conversations in the list archives, the blog post is the
>> result of many such "debates". I'll apologize in advance if this is not
>> your case.
>> Cheers,
>> Doug
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message