Commit Graph

249 Commits

Author SHA1 Message Date
Guillaume Nodet
6189475f1b Fix daemon connection race condition (#1078)
The Server was using a SynchrnousQueue to coordinate the main thread
and the background thread that receives the request from the client.
A SynchronousQueue only allows insertions when a corresponding call
to `get` is in progress. However, since the receiver thread is started
before the call to `get`, there was a short time window, where the call
to `queue.offer` could fail and simply return `false`. This return code
was ignored.

A possible solution would have been to call `put` instead of `offer`,
but I decided to replace the queue with a Future, since we only wait
for a single element.

Co-authored-by: Stefan Oehme <st.oehme@gmail.com>
2024-07-19 13:42:11 +02:00
Tamas Cservenak
b6e469089b Maven 4 beta-2 (#998)
And fix the build w/ smaller cleanups, plugin updates and backport of `-itr`, `-sadp`.

Changes:
* Maven 4 beta-2 (staged, on vote)
* Maven Wrapper 3.3.1 + script updates
* maven-plugin-tools 3.13.0
* buildhelper-maven-plugin 3.6.0
* graalvm plugin 0.10.2
* provisio 1.0.25
* exec-maven-plugin 3.3.0
* backport `-itr` and `-sadp` (Maven CLI)
2024-05-22 14:45:33 +02:00
Guillaume Nodet
42b230c10c Upgrade to Maven 4.0.0-beta-1 (#974) 2024-05-03 21:10:04 +02:00
Guillaume Nodet
a6b275db59 Split Maven 3 and 4 support and switch to version 2.0-SNAPSHOT (fixes #973) (#970) 2024-04-26 10:38:39 +02:00
Guillaume Nodet
acf64a7fab Small improvements to DaemonPrompter (#898) 2023-10-25 17:03:24 +02:00
Guillaume Nodet
18d0583304 Fix terminal width (fixes #870) (#891) 2023-10-16 14:40:52 +02:00
Guillaume Nodet
f8adf1b770 Switch to slf4j simple logger (fixes #835) (#868) 2023-07-10 15:16:32 +02:00
Peter Palaga
7d9a39be1a JAVA_HOME should be documented as discriminating #852 2023-05-23 17:30:31 +02:00
Peter Palaga
82e42e6e64 Show which options are discriminating in the output of mvnd --help 2023-05-23 17:30:31 +02:00
Guillaume Nodet
6a3448d9c4 NPE during expiration check (fixes #842) (#843) 2023-05-17 12:57:25 +02:00
Guillaume Nodet
5093ced94b Remove plexus-utils and commons-xxx references (#833) 2023-04-06 10:52:45 +02:00
Guillaume Nodet
eef6c2f16f Sort build times for the whole reactor by decreasing total time (#829) 2023-04-06 10:48:16 +02:00
Guillaume Nodet
0e057cb12b Make sure mvnd's plexus-interactivity is not in the maven classloader, fixes #807
* the logging framework is extracted into its own jar and moved in the mvn/lib/ directory
* the other daemon jars are moved into the mvn/lib/mvnd directory and not used by maven at all
This makes maven class loader almost identical to the stock maven classloader, but for the logging framework
2023-03-14 13:53:24 +01:00
Petr Široký
50653ae7d9 logging: use format specifiers instead of string concatenation 2023-03-12 23:08:32 +01:00
Guillaume Nodet
c2e4ee2f00 Fix EnvHelper#chDir on JDK 21 (#802) 2023-03-10 10:07:17 +01:00
Guillaume Nodet
65da451ecd Switch back to takari smart builder (#805) 2023-03-10 08:48:08 +01:00
Guillaume Nodet
2113d61baa Avoid possible NPE, fixes #795 (#806) 2023-03-10 08:47:33 +01:00
Guillaume Nodet
95b40a3d8a Provide distributions for both maven 3.9.x and 4.0.x (#796) 2023-03-08 00:03:49 +01:00
Petr Široký
1f99fb8cb7 Run client connection handler inside new thread, fixes #798 (#801)
* Run client connection handler inside new thread, fixes #798
* Execute CI build on ubuntu-22.04
 * ubuntu-18.04 image is now deprecated and there are brownout periods
   being introduced where the builds are failing
 * see https://github.com/actions/runner-images/issues/6002 for more
   details
2023-03-07 14:16:04 +01:00
Stefan Oehme
0b55c8f3e6 Add property to disable model caching
This is mostly for the integration tests of the Gradle Enterprise Maven extension,
which heavily test dependency resolution and reuse the same GAVs in many test,
e.g. a:b:1.0. It would be a lot of effort to rewrite all those tests and a shame
to restart the daemon every time. So I wanted to ask if you'd consider this flag
to disable the caching altogether.
2023-03-02 22:42:36 +01:00
Stefan Oehme
1bcfc29d45 Make Classworld setup more alike to vanilla Maven (#784)
Use the plexus Launcher to start the daemon server, just like we would
launch a normal Maven process.

This improves compatibility with any extensions or plugins that assume that
their ClassLoader is a ClassRealm.
2023-02-14 17:06:34 +01:00
Guillaume Nodet
ddc8ef9a10 Remove duplicate header 2023-02-14 16:53:05 +01:00
Guillaume Nodet
9d9f9c62f2 Workaround for MNG-7673 2023-01-28 02:11:14 +01:00
Guillaume Nodet
bf892cd1bf Upgrade to maven 4.0.0-m4 and resolver 1.9.4 2023-01-28 00:07:56 +01:00
Stefan Oehme
74df4b6b53 Fix core export provider (#764)
* Fix core export provider

Since https://github.com/apache/maven/pull/616, the default
CoreExportProvider no longer uses the provided CoreExports,
but instead tries (and fails) to discover them itself.

This change fixes that by providing our own custom instance
of CoreExportProvider. This allows core extension to contribute
exported artifacts and exported packages again, like it used to
do before the Maven 4.x upgrade.

* Add integration tests for API-providing extensions
2023-01-17 11:18:22 +01:00
Guillaume Nodet
f3c336adb9 Fix spotless config to include all java files (#768) 2023-01-10 18:39:29 +01:00
Guillaume Nodet
417ed7ec8b Fix performance problem with mvnd (fixes #758, #760) 2022-12-23 10:22:59 +01:00
Guillaume Nodet
89841adbcb Upgrade to maven parent 39 and reformat accordingly 2022-12-16 11:38:47 +01:00
Guillaume Nodet
55236739f8 Add a mvnd.rawStreams property (#719) 2022-12-16 11:33:59 +01:00
Guillaume Nodet
39ee2b6014 Move signal handling into its own class (#754)
This opens some room to per-jdk implementation
2022-12-16 11:11:04 +01:00
Tamas Cservenak
92cbc7d6cf Update Maven to 4.0.0-alpha-3 and Maven Resolver to 1.9.2 (#742)
https://issues.apache.org/jira/browse/MNG-7586

* Remove CliMavenPluginManager which has the changed needed in alpha-3
* Align slf4j api with maven
* Make sure the invoker being called from IT reuses the settings from the invoker running the IT
* Fix IT when mrm is disabled
* Fix InvalidingPluginRealmCache

Co-authored-by: Guillaume Nodet <gnodet@gmail.com>
2022-12-15 19:26:58 +01:00
James Z.M. Gao
f8d047bdae Use muti-release jar to fallback mvnd-client to original maven (#722)
* Use muti-release jar to fallback mvnd-client to original maven

The mvnd-client is built to a muti-release jar. The default version of
    DefaultClient is compiled against the same target version as the
   embedded maven (4.x, so JDK 1.8) which only invoke the MavenCli.main(). 
The java-11 version is the full qualified mvnd-client.

* update cmd scripts

* embedded maven now works under JDK 1.8

Build SimpleAppender for JDK 1.8 since it is the log appender only
   for the embedded maven

Co-authored-by: Guillaume Nodet <gnodet@gmail.com>
2022-12-14 17:41:02 +01:00
Guillaume Nodet
2b8076d1ed Support redirecting input from client to daemon, #541 (#581)
The implementation currently switches on the redirection when the daemon actually starts reading the System.in stream using InputStream.read() or InputStream.available().
2022-12-13 23:59:35 +01:00
Guillaume Nodet
2a8d18d119 Display plugin's goal prefix and version instead of artifactId (#748)
* Display plugin's goal prefix and version instead of artifactId
* Default to groupId:artifactId if goalPrefix is not present
2022-12-13 23:58:58 +01:00
Guillaume Nodet
25b5117749 Clean up some warnings during the build (#750) 2022-12-13 23:00:11 +01:00
Stefan Oehme
eedcb77e3c Reset system properties after calling event syps (#729)
Event spies may want to read system properties, which will fail if they are reset
too early. This change makes the behavior consistent with regular Maven.
2022-12-07 18:05:50 +01:00
Guillaume Nodet
d1d3cb0f65 Fix possible NullPointerException 2022-11-23 10:16:27 +01:00
Guillaume Nodet
a14a1eb80f Reformat 2022-11-22 15:44:53 +01:00
Guillaume Nodet
895381b43f Switch to maven 4.0.0-alpha-2 (#718) 2022-11-19 16:56:26 +01:00
Guillaume Nodet
48ca793014 Fix duplicate space in doc 2022-10-03 21:08:57 +02:00
Guillaume Nodet
192affadc6 Fix maven extensions' parent classloader (fixes #690) (#702) 2022-10-03 15:19:50 +02:00
Guillaume Nodet
8c9d1673de SimpleAppender omits stacktraces (fixes #696) (#700) 2022-10-03 11:25:10 +02:00
Guillaume Nodet
378a776166 Fix plugins' parent classloader to not include libraries, fixes #681 (#683) 2022-09-08 06:15:13 +02:00
Tamas Cservenak
53751d2069 Drop Maven dupe classes (#633)
That has been fixed in Maven version used by mvnd.
Last bit is MavenCli/DaemonCli that is currently
"almost" a copy, but they do not share any code.
2022-05-03 17:53:30 +02:00
Stephan Schroevers
0288988d63 Replace github.com/mvndaemon/mvnd references (#622)
As the repository is now hosted under `github.com/apache/maven-mvnd`.
2022-04-28 09:43:19 +02:00
Tamas Cservenak
d2365ee166 Mvnd with file locking (#508)
* Update mvnd to include Maven Resolver 1.7

As mvnd itself is Java8 lang level, it is completely
okay to up resolver to 1.7 (that is java8 as well).
The only reason why Maven 3.8.x CANNOT use resolver
1.7 is that it is still Java7 level.

* Move missing piece to SPI

* Add global exclusions

* Example of mvnd using file locking (of resolver)

* Drop irrelevant

* Upgrade to released 1.7.3

Co-authored-by: Guillaume Nodet <gnodet@gmail.com>
2022-04-11 13:29:42 +02:00
Guillaume Nodet
3b100839a8 Fix mvn/bin/mvn debug output (#606) 2022-03-05 09:03:14 +01:00
Guillaume Nodet
4755734708 Avoid caching parent with a version containing a property, fixes #594 (#602) 2022-03-03 13:22:27 +01:00
Guillaume Nodet
62d580b930 Daemon reuse ignores differences in .mvn/jvm.config, fixes #576 (#580) 2022-01-13 10:01:33 +01:00
Guillaume Nodet
8ae2ce3525 Remove wrong MavenProject, #561 (#566) 2022-01-11 08:14:31 +01:00