Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-users] m2e, code generation and the Eclipse project builders order

Eclipse is expected to detect generated sources and run second
incremental build automatically. Do you have workspace autobiuld enabled?

--
Regards,
Igor

On 12-04-26 5:35 AM, Eric Cassam-chenaï wrote:
Hello!
I am using m2e managed projects with the maven antlr3 plugin. I have
also the Antlr3 configurator installed to manage lifecycle mappings.
As the Antlr3 plugin generates source code for parsers, I plug its main
goal 'antlr' to the 'generate-sources' phase :
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr3-maven-plugin</artifactId>
<version>3.4</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>antlr</goal>
</goals>
<configuration>
<sourceDirectory>src/main/antlr3</sourceDirectory>
<libDirectory>src/main/antlr3/imports</libDirectory>
<outputDirectory>src/main/java</outputDirectory>
<printGrammar>false</printGrammar>
<profile>false</profile>
<report>true</report>
<trace>false</trace>
<verbose>true</verbose>
<debug>false</debug>
<dfa>false</dfa>
<nfa>false</nfa>
</configuration>
</execution>
</executions>
</plugin>
My problem is that when I launch a project build from the Eclipse IDE,
the java builder is applied first and then the maven builder, by
default. Thus compilation occurs
before code generation, which is managed by maven.
This cause my test classes, which have dependencies upon generated lexer
and parser not to compile :

public class Test {
     public static void main(String[] args) throws Exception {
        .....
         TLexer lexer = new TLexer(input); -> error
       ......
         TParser parser = new TParser(tokens); -> error
         parser.r();
     }
}
I have to build the project a second time to have the errors removed. As
a workaround, I can modify the builder order in the project's properties
screen  using UP or DOWN buttons.
But every time I change my pom.xml and fire an 'Update Project
Configuration...', the .project file, which stores the used builders and
their application order is reset to defaults.
Googling a little bit, I found this link
https://issues.sonatype.org/browse/MNGECLIPSE-707, indicating that it's
the intended behavior in order to solve a resource clean issue when the
builder order is changed.
I tried to issue a clean within Eclipse Indigo using 'Project ->
Clean...' menu, and seems to work (resources and classes are effectively
deleted), even if maven builder is set in first position.

Is it really necessary the reset the builder's order after an 'Update
Project Configuration...' ?
Is there another way to force m2e and maven launch code generation
before compilation using Eclipse tooling and not the mvn command  ?
Thanks for any answer or hint.



_______________________________________________
m2e-users mailing list
m2e-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-users


Back to the top