I think that your conclusions are reasonable.
I've built your test project, that confirms the startup delay hypothesis.

However performances must be evaluated on specific test cases :
building a 10 *.java program is different from building CXF (maven) or
derby (ant).

Maybe that also the goals are different :
Maven stress repeatability of builds, even offering that some plugin
run in separate java process.
In some cases I run mvn asking for a new local repository, re-downloading
all plugins and dependencies.

So ... if the final goal is to keep nb "build system agnostic" I
think that the focus is in the interfaces towards the build systems
(running mvn "in process" like ant could be an idea - for small projects)
avoiding buffer locking and display delay.

assessing expected result for different project sizes (small 10 files - medium 100
- big CXF) will give useful hints.

Thank-you & best regards,

    Davide

On 27/08/2020 07:30, Jaroslav Tulach wrote:
Dne středa 26. srpna 2020 10:01:33 CEST, Davide Grandi napsal(a):
Sorry to be late, but
      there is a project test case for Maven "slowlyness" ?
This is a great question, thanks Davide!

I've just tried to create such project:
https://issues.apache.org/jira/browse/NETBEANS-4746
and yes, Maven is slower (see the instructions in the issue):

```bash
justtest$ mvn -quiet -Dtest=MainTest process-test-classes surefire:test
justtest$ ant -q test-single
```

However only 2.6s vs. 1.9s and that cannot be the problem NetBeans users
complain about.

I guess the real problem is when people open the projects in the NetBeans IDE.

Try to remove `pom.xml` and open the folder in NetBeans IDE 12.x - it opens as
an Ant project. Select `MainTest.java` class and press Ctrl+F6 - repeat - at
the end it takes less then 1s!

Repeat again from scratch, but remove `build.xml` file and `nbproject`
directory. Then the project opens as Maven. Select `MainTest.java` class and
press Ctrl+F6 - takes more than 2s - repeat - takes more than 2s again.

What cases the difference?

Hypothesis: Probably different Ant and Maven integration into the NetBeans IDE.
While Ant is executed in the same JVM as the IDE in an isolated classloader,
Maven is probably always started as a separate process. Given a regular JDK
doesn't do anything useful for first 1-1.5s of execution we might have found
the difference. Ant code is reused again and again and warms up over time.
Maven always starts from scratch and JDK's warming delay causes the wrong
impression.

Consider verifying my claims and observations.
-jt

I mean : a project for which there's a time gap between

- nb/command line mvn invocations
- or between ant / mavn builds (I know : how many projects have TWO
build files ? ...)

for routinely rebuilds of big projects I often activate the "quiet" and
"parallel" build params
and keep an eye at mvn java memory params.
Usual network and I/O tricks may apply.

bye,

      Davide

On 25/08/2020 07:27, Jaroslav Tulach wrote:
And it's Apache Maven, over the corner at https://maven.apache.org/ so
I suppose that community would be happy to get such contributions.

-Bertrand
You are right, Bertrand. Why not ask!

Hello Maven guys,
we had a discussion on the NetBeans mailing list recently and here is a
summary:
* Apache NetBeans IDE is delegating most of its work directly to Maven
* Users however complain that the speed isn't great
* One of the ideas was to launch a "zombie" instance of Maven in advance
* then actions like build, exec or test would be faster

Have you thought about something like this already? Any advices?

Best regards.
Jaroslav Tulach
NetBeans Platform Architect

ne 23. 8. 2020 v 9:06 odesílatel Jaroslav Tulach
<jaroslav.tul...@gmail.com>>
napsal:
I agree with others, Ant is much faster day to day. But the pom.xml has
become the universal project file for Java,
Thank you all for sharing your thoughts. I know Maven start is slower,
but
I
learned to live with it. It is interesting to hear that some of you
maintain a
dual Ant based copy of your project metadata. Once we were trying a
different
approach:

There is a way to speed Maven in the IDE. Launch Maven, let it read all
XML &
co. files and stop it. As soon as we need to build/run/test, wake up this
zombie Maven process, tell it what to do and let it continue. If the XML
files
are modified, throw the process away and initialize it again. Tomáš
Stupka
implemented a prototype of this and there were no issues, as far as I
know
(nobody tested it thoroughly however).

Maybe the support is even in and there is a property to turn it on. If
the
Maven startup is the biggest problem for you guys, we shall investigate
how to
turn Tomáš's work on...

-jt

--
Ing. Davide Grandi
email    : davide.gra...@email.it
mobile   : +39 339 7468 778
linkedin : http://linkedin.com/in/davidegrandi


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@netbeans.apache.org
For additional commands, e-mail: dev-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists



Reply via email to