BTW we also have a special validation that checks the order of the
builders and create a warning with a quickfix if there is a problem.
For example in CDI:
I think it's better to use such validation for your validator anyway.
You can reuse it ( KBValidator.validateBuilderOrder()).
Let see what can happen if m2e enables CDI and JAX-RS when the project
is importing as an existing maven project.
1. m2e enables CDI.
2. CDI tools add CDI builder and WST validation builder.
3. m2e, I guess, enables JAX-RS
So if JAX-RS tools just add its builder to the .project when CDI has
been enabled then you will get a problem. You wil get something like
this in the .project:
java builder
cdi builder
wst validation builder
jax-rs builder
So validation will be invoked before you JAX-RS builder.
It's not a problem for CDI validation since CDI tools take care of
builder order when enabling CDI support.
If m2e is the last one in .project then I don't see problems here. If
m2e builder changes any resources in the project then eclipse will run
all the builders again.
On 10/11/2013 08:32 AM, Xavier Coulon wrote:
Rob,
That's what Fred showed me, too. But in my case, it's an import of an
existing project, thus the builders (JAX-RS, m2e and Validation,
amongst others) are already configured.
Thanks for your help !
Best regards,
/Xavier
On Oct 11, 2013, at 3:00 PM, Rob Cernich wrote:
>> Xavier,
>>
>> Worth checking out if your two different flows might be caused by your
>> validator/builder being added in different sequence. Causing you to miss
>> java changes ?
>
> Max, I think the m2e builder always wants to be last:
>
https://github.com/eclipse/m2e-core/blob/master/org.eclipse.m2e.core/src/...
>
>>
>> /max (sent from my phone)
>>
>>
>>> On 10/10/2013, at 20.06, Alexey Kazakov <akazakov(a)exadel.com
>>> <mailto:akazakov@exadel.com>> wrote:
>>>
>>> I didn't notice any problems with CDI validation for m2e projects.
>>> But when we enable CDI support on the project (there is the only method
>>> for that which is used by m2e, preference pages, new project wizard,
>>> install facet delegates, etc)
>>> we make sure we have builders in .project in a proper order.
>>> So we don't just add cdi and validation builders. We re-order the list
>>> of builders in .project. See
>>> WebModelPlugin.addNatureToProjectWithValidationSupport();
>>> In our case four builders are critical: Java, KB, CDI, WST validation.
>>> And the order of these builders is critical for us.
>>> Every time m2e changes something in the project, the whole stack of
>>> builders is invoked and even if it does change the project step-by-step
>>> the final changing/building will fix false validation problems
>>> caused by
>>> previous changes.
>>>
>>> On 10/10/2013 09:50 AM, Rob Cernich wrote:
>>>>> There is something badly wrong if we need to start making that
>>>>> the habit
>>>>> (if
>>>>> your project is m2e then disable the validation and do it in a maven
>>>>> plugin/extension instead) :)
>>>> Yes. That is the plan moving forward, but it was easier to get
>>>> validation
>>>> into the tooling than it was to get it into the mojo, so...
>>>>
>>>>> ...but that said - I know we've seen more than a few issues with
>>>>> m2e vs
>>>>> eclipse causing "havoc" on builds.
>>>>>
>>>>> /max
>>>>>
>>>>>> On Thu, Oct 10, 2013 at 11:49:10AM -0400, Rob Cernich wrote:
>>>>>> Hey Xavier,
>>>>>>
>>>>>> I had a similar problem with the SwitchYard validator. Upon
further
>>>>>> investigation, it appears m2e wants the Maven builder to be last
>>>>>> in the
>>>>>> list. Based on that, I eventually gave up, disabled the
SwitchYard
>>>>>> validator from the build and invoked it directly from the
>>>>>> SwitchYard m2e
>>>>>> build participant. I suspect something similar will probably
>>>>>> need to be
>>>>>> done in your case, assuming there is a JAX-RS participant for
m2e.
>>>>>>
>>>>>> Hope that helps,
>>>>>> Rob
>>>>>>
>>>>>> ----- Original Message -----
>>>>>>
>>>>>>> hello,
>>>>>>> I'm banging my head against the wall trying to fix this
issue: On a
>>>>>>> Full
>>>>>>> Publish LiveReload refreshes the browser before the
application is
>>>>>>> fully
>>>>>>> restarted
>>>>>>> Here's the context: I have a kitchensink project in which
there
>>>>>>> are are
>>>>>>> JAX-RS errors (a custom JAX-RS HTTP Method is missing some
>>>>>>> annotations)
>>>>>>> Now, here's the problem I have:
>>>>>>> - in some cases, the metamodel exists and is complete (i.e.:
>>>>>>> the m2e
>>>>>>> dependencies were properly set *before* the metamodel was
>>>>>>> built), and
>>>>>>> then,
>>>>>>> the validation occurs on the whole project, and I have the
expect
>>>>>>> errors
>>>>>>> reported.
>>>>>>> - in other cases, the validation on the whole project is
executed
>>>>>>> *before*
>>>>>>> m2e did set the dependencies on the project's classpath.
At
>>>>>>> this stage,
>>>>>>> the
>>>>>>> metamodel exists but it is empty (the java classes have
compilation
>>>>>>> errors
>>>>>>> because of missing libs, so no JAX-RS element was created).
The
>>>>>>> metamodel
>>>>>>> is
>>>>>>> completed after m2e updated the project's classpath, but
then a
>>>>>>> validation
>>>>>>> job is triggered because of bunch of xml files (not related
to the
>>>>>>> JAX-RS
>>>>>>> classes) were processed by m2e and copied into the
/target/classes
>>>>>>> output
>>>>>>> folder. This means that the full validation was not
executed.
>>>>>>> Basically, it looks as if some operations (m2e / JAX-RS /
>>>>>>> validation)
>>>>>>> don't
>>>>>>> always occur in the same order, which sometimes result in
>>>>>>> incomplete
>>>>>>> validation and missing markers as expected. (not to mention
>>>>>>> that I have
>>>>>>> no
>>>>>>> clue how to force the order of execution, which makes the
debugging
>>>>>>> *not
>>>>>>> fun*...)
>>>>>>> Any idea how I could make sure the validation (based on
>>>>>>> org.jboss.tools.common.validation) could be always called on
the
>>>>>>> project
>>>>>>> after m2e sets the dependencies in the classpath ?
>>>>>>> Thanks for your help ;-)
>>>>>>> Best regards,
>>>>>>> /Xavier
>>>>>>> _______________________________________________
>>>>>>> jbosstools-dev mailing list
>>>>>>> jbosstools-dev(a)lists.jboss.org
>>>>>>> <mailto:jbosstools-dev@lists.jboss.org>
>>>>>>>
https://lists.jboss.org/mailman/listinfo/jbosstools-dev
>>>>>> _______________________________________________
>>>>>> jbosstools-dev mailing list
>>>>>> jbosstools-dev(a)lists.jboss.org
>>>>>> <mailto:jbosstools-dev@lists.jboss.org>
>>>>>>
https://lists.jboss.org/mailman/listinfo/jbosstools-dev
>>>> _______________________________________________
>>>> jbosstools-dev mailing list
>>>> jbosstools-dev(a)lists.jboss.org
<mailto:jbosstools-dev@lists.jboss.org>
>>>>
https://lists.jboss.org/mailman/listinfo/jbosstools-dev
>>>
>>> _______________________________________________
>>> jbosstools-dev mailing list
>>> jbosstools-dev(a)lists.jboss.org <mailto:jbosstools-dev@lists.jboss.org>
>>>
https://lists.jboss.org/mailman/listinfo/jbosstools-dev
>>
>> _______________________________________________
>> jbosstools-dev mailing list
>> jbosstools-dev(a)lists.jboss.org <mailto:jbosstools-dev@lists.jboss.org>
>>
https://lists.jboss.org/mailman/listinfo/jbosstools-dev
>>
> _______________________________________________
> jbosstools-dev mailing list
> jbosstools-dev(a)lists.jboss.org <mailto:jbosstools-dev@lists.jboss.org>
>
https://lists.jboss.org/mailman/listinfo/jbosstools-dev
_______________________________________________
jbosstools-dev mailing list
jbosstools-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jbosstools-dev