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.
|