Hi Igor!
Could you please write your ideas or tips (better in Eclipsepedia to
make available to everyone). I will have a long vacation in
December-January and could look through the code.
Regards,
htfv (Aliaksei Lahachou)
On Tue, Dec 10, 2013 at 11:23 AM, Aliaksei Lahachou
<aliaksei.lahachou@xxxxxxxxx <mailto:aliaksei.lahachou@xxxxxxxxx>> wrote:
I would take the task, if all parties agree. But my personal time is
very limited, and one developer-month will drag on much longer.
On Mon, Dec 2, 2013 at 1:33 PM, Igor Fedorenko <igor@xxxxxxxxxxxxxx
<mailto:igor@xxxxxxxxxxxxxx>> wrote:
You can't split maven builder in two. There are cases when maven
plugins
depend on project properties and other state created by plugins
executed
earlier in the lifecycle. For example, buildhelper plugin defines a
property required by test-resources plugin. Other aspects of maven
execution context, like consistent dependency resolution and
caching,
will be impossible to impossible to implement if maven builder
was split
in two.
I think running java compiler as part of workspace maven build is a
better approach. This does require somewhat involved refactoring
of jdt,
probably a developer-month or two worth of work, I don't have
this much
time to contribute to community work at the moment, but if somebody
wants to try (or has resources to invest ;-) ), I can give pointers.
--
Regards,
Igor
On 12/2/2013, 4:25, Aliaksei Lahachou wrote:
Putting existing Maven builder at the first position is out
of question,
that would be to dangerous. But I think the problem is not
just this
peculiarity with refresh. We have a big project with a lot
of files
generated. When Java builder compiles the sources for the
first time, it
generates many thousands of errors. After that, when sources are
generated, it has to rebuild many classes, which were
already built in
the first step. Not very effective.
Is it possible to have two Maven builders - one before the
Java builder
and one after - and let connectors decide, where they want
to run? Two
questions here:
1. Is this idea viable at all?
2. I know that you are busy, how difficult would it be to
implement
another builder for someone without deep knowledge of m2e?
Another idea, which should be easier to implement: make it
possible to
configure the position of Maven builder, for example in
org.eclipse.m2e:lifecycle-__mapping plugin. Developers may
then try
putting Maven builder first and see if it works for them.
On Mon, Dec 2, 2013 at 3:48 AM, Igor Fedorenko
<igor@xxxxxxxxxxxxxx <mailto:igor@xxxxxxxxxxxxxx>
<mailto:igor@xxxxxxxxxxxxxx <mailto:igor@xxxxxxxxxxxxxx>>>
wrote:
I don't remember why m2e adds maven builder last. I
don't want to change
the order to workaround what appears to be a bug in
eclipse platform.
Maven build on command line usually involved two java
compiler
invocations, one for main and another for test classes.
It is not
possible to represent this inside workspace without
changes to jdt, so
we have to rely on correct incremental build behaviour
to do multiple
build rounds to get everything built.
--
Regards,
Igor
On 12/1/2013, 12:54, Aliaksei Lahachou wrote:
As a workaround, I now schedule a job after a full
build, which
does an
incremental build. It looks good on smaller test
projects, I'm
going to
test it on bigger projects.
I also tried scheduling a job, which refreshes
generated
resources. It
works, but does not look as nice as doing an
incremental build:
even on
small test projects there is a moment, where error
markers
appear and
disappear, as the sources are recompiled.
Why is Maven builder configured after the Java
builder? Isn't it
more
logical (at least for code generation cases) to
have it before
the Java
builder? Are there cases where Maven builder must
run after the Java
builder?
On Sun, Dec 1, 2013 at 4:14 PM, Igor Fedorenko
<igor@xxxxxxxxxxxxxx <mailto:igor@xxxxxxxxxxxxxx>
<mailto:igor@xxxxxxxxxxxxxx <mailto:igor@xxxxxxxxxxxxxx>>
<mailto:igor@xxxxxxxxxxxxxx
<mailto:igor@xxxxxxxxxxxxxx> <mailto:igor@xxxxxxxxxxxxxx
<mailto:igor@xxxxxxxxxxxxxx>>>> wrote:
The list of configurators you have is quite
intimidating,
so I haven't
dared to check your test project ;-)
The problem with antlr test project appears to
be a bug in
(or my
misunderstand of) IFolder#refresh. When underlying
directory and its
contents are deleted and recreated directly on
filesystem,
subsequent
workspace refresh of the folder does not
trigger a build,
so jdt builder
does not know it needs to rebuild the
generated sources.
You should be
able to reproduce the problem without m2e, but
I have not
tried. I
believe this the sequence of events that lead
to the problem
1 "mvn clean" removes generated sources and
class files,
the workspace
is out of sync with filesystem but doesn't
know about
this yet.
2 project/clean invokes java builder, which
compiles
non-generated
sources and creates error markers about missing
generated sources
3 project/clean invokes m2e builder, which
generates sources on
filesystem and calls IFolder#refresh.
This should trigger another incremental but
does not.
--
Regards,
Igor
On 12/1/2013, 8:02, Aliaksei Lahachou wrote:
Hello everyone!
I have a bunch of connectors [1]. Since
some time ago,
they are
used by
a big team, and I started receiving
complaints. I
reproduced the
problem
with the test project for the
cxf-xjc-plugin connector [2]:
1. Import the project. Everything is fine
after import.
2. Select Project/Clean. At this point,
connector
deletes generated
files, refreshes the target folders,
generates new
files, and
refreshes
the target folders again. The generated
Java files are
correctly
refreshed and visible in Eclipse, but the
incremental
build is not
triggered and the files are not compiled. The
DependsOnGenerated
class,
which depends on generated Java classes,
displays
errors like "class
cannot be resolved to a type" and "import
cannot be
resolved".
On rare
occasions the generated files are
recompiled, but in
most cases the
problem is reproducible.
3. Refresh the project manually. The
generated files are
compiled and
all errors go away.
I played a bit with the antlr-maven-plugin
connector
and one of
its test
projects [3]. The problem is not so
visible, because it
does not
delete
generated files on clean. But it's still
possible to
reproduce:
1. Do mvn clean in command line.
2. Do Project/Clean - the files are
generated and
refreshed, but the
Sample class has errors.
3. Refresh the project - errors are gone.
Tested with Eclipse Kepler and Kepler SR1.
Complaints
came from
the team
working on STS based on Eclipse 3.8. The
problem is not
reproducible if
Maven Project Builder is configured before
the Java
Builder, but
when
Maven project configuration is updated,
Java Builder is put
again at the
top.
I found a bug which may be related [4]. Is
this a known
problem? Is
there a workaround for it?
[1]
https://github.com/htfv/m2e-______connectors
<https://github.com/htfv/m2e-____connectors>
<https://github.com/htfv/m2e-____connectors
<https://github.com/htfv/m2e-__connectors>>
<https://github.com/htfv/m2e-____connectors
<https://github.com/htfv/m2e-__connectors>
<https://github.com/htfv/m2e-__connectors
<https://github.com/htfv/m2e-connectors>>>
[2]
https://github.com/htfv/m2e-______connectors/tree/develop/cxf-______xjc/com.github.htfv.m2e.______connectors.cxfxjc.tests/__test-____projects/xsdtojava
<https://github.com/htfv/m2e-____connectors/tree/develop/cxf-____xjc/com.github.htfv.m2e.____connectors.cxfxjc.tests/test-____projects/xsdtojava>
<https://github.com/htfv/m2e-____connectors/tree/develop/cxf-____xjc/com.github.htfv.m2e.____connectors.cxfxjc.tests/test-____projects/xsdtojava
<https://github.com/htfv/m2e-__connectors/tree/develop/cxf-__xjc/com.github.htfv.m2e.__connectors.cxfxjc.tests/test-__projects/xsdtojava>>
<https://github.com/htfv/m2e-____connectors/tree/develop/cxf-____xjc/com.github.htfv.m2e.____connectors.cxfxjc.tests/test-____projects/xsdtojava
<https://github.com/htfv/m2e-__connectors/tree/develop/cxf-__xjc/com.github.htfv.m2e.__connectors.cxfxjc.tests/test-__projects/xsdtojava>
<https://github.com/htfv/m2e-__connectors/tree/develop/cxf-__xjc/com.github.htfv.m2e.__connectors.cxfxjc.tests/test-__projects/xsdtojava
<https://github.com/htfv/m2e-connectors/tree/develop/cxf-xjc/com.github.htfv.m2e.connectors.cxfxjc.tests/test-projects/xsdtojava>>>
[3]
https://github.com/tesla/______m2eclipse-antlr/tree/master/______org.sonatype.m2e.antlr.__tests/____projects/antlr/__antlr-p001
<https://github.com/tesla/____m2eclipse-antlr/tree/master/____org.sonatype.m2e.antlr.tests/____projects/antlr/antlr-p001>
<https://github.com/tesla/____m2eclipse-antlr/tree/master/____org.sonatype.m2e.antlr.tests/____projects/antlr/antlr-p001
<https://github.com/tesla/__m2eclipse-antlr/tree/master/__org.sonatype.m2e.antlr.tests/__projects/antlr/antlr-p001>>
<https://github.com/tesla/____m2eclipse-antlr/tree/master/____org.sonatype.m2e.antlr.tests/____projects/antlr/antlr-p001
<https://github.com/tesla/__m2eclipse-antlr/tree/master/__org.sonatype.m2e.antlr.tests/__projects/antlr/antlr-p001>
<https://github.com/tesla/__m2eclipse-antlr/tree/master/__org.sonatype.m2e.antlr.tests/__projects/antlr/antlr-p001
<https://github.com/tesla/m2eclipse-antlr/tree/master/org.sonatype.m2e.antlr.tests/projects/antlr/antlr-p001>>>
[4]
https://bugs.eclipse.org/bugs/______show_bug.cgi?id=58649
<https://bugs.eclipse.org/bugs/____show_bug.cgi?id=58649>
<https://bugs.eclipse.org/__bugs/__show_bug.cgi?id=58649
<https://bugs.eclipse.org/bugs/__show_bug.cgi?id=58649>>
<https://bugs.eclipse.org/____bugs/show_bug.cgi?id=58649
<https://bugs.eclipse.org/__bugs/show_bug.cgi?id=58649>
<https://bugs.eclipse.org/__bugs/show_bug.cgi?id=58649
<https://bugs.eclipse.org/bugs/show_bug.cgi?id=58649>>>
Regards,
htfv (Aliaksei Lahachou)
_____________________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
<mailto:m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>>
<mailto:m2e-dev@xxxxxxxxxxx
<mailto:m2e-dev@xxxxxxxxxxx> <mailto:m2e-dev@xxxxxxxxxxx
<mailto:m2e-dev@xxxxxxxxxxx>>>
https://dev.eclipse.org/______mailman/listinfo/m2e-dev
<https://dev.eclipse.org/____mailman/listinfo/m2e-dev>
<https://dev.eclipse.org/____mailman/listinfo/m2e-dev
<https://dev.eclipse.org/__mailman/listinfo/m2e-dev>>
<https://dev.eclipse.org/____mailman/listinfo/m2e-dev
<https://dev.eclipse.org/__mailman/listinfo/m2e-dev>
<https://dev.eclipse.org/__mailman/listinfo/m2e-dev
<https://dev.eclipse.org/mailman/listinfo/m2e-dev>>>
_____________________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
<mailto:m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>>
<mailto:m2e-dev@xxxxxxxxxxx
<mailto:m2e-dev@xxxxxxxxxxx> <mailto:m2e-dev@xxxxxxxxxxx
<mailto:m2e-dev@xxxxxxxxxxx>>>
https://dev.eclipse.org/______mailman/listinfo/m2e-dev
<https://dev.eclipse.org/____mailman/listinfo/m2e-dev>
<https://dev.eclipse.org/____mailman/listinfo/m2e-dev
<https://dev.eclipse.org/__mailman/listinfo/m2e-dev>>
<https://dev.eclipse.org/____mailman/listinfo/m2e-dev
<https://dev.eclipse.org/__mailman/listinfo/m2e-dev>
<https://dev.eclipse.org/__mailman/listinfo/m2e-dev
<https://dev.eclipse.org/mailman/listinfo/m2e-dev>>>
___________________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
<mailto:m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>>
https://dev.eclipse.org/____mailman/listinfo/m2e-dev
<https://dev.eclipse.org/__mailman/listinfo/m2e-dev>
<https://dev.eclipse.org/__mailman/listinfo/m2e-dev
<https://dev.eclipse.org/mailman/listinfo/m2e-dev>>
___________________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
<mailto:m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>>
https://dev.eclipse.org/____mailman/listinfo/m2e-dev
<https://dev.eclipse.org/__mailman/listinfo/m2e-dev>
<https://dev.eclipse.org/__mailman/listinfo/m2e-dev
<https://dev.eclipse.org/mailman/listinfo/m2e-dev>>
_________________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
https://dev.eclipse.org/__mailman/listinfo/m2e-dev
<https://dev.eclipse.org/mailman/listinfo/m2e-dev>
_________________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
https://dev.eclipse.org/__mailman/listinfo/m2e-dev
<https://dev.eclipse.org/mailman/listinfo/m2e-dev>
_______________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-dev