Commit Graph

78 Commits

Author SHA1 Message Date
stellar 0a588ea174
[MNG-8493] 'serialVersionUID' can be annotated with '@Serial' annotation (#2034) 2025-01-10 18:34:05 +01:00
Elliotte Rusty Harold 03cca08d8d
[MNG-8483] Prefer Objects.requireNonNull (#2019)
* Prefer Objects.requireNonNull
2025-01-10 17:14:24 +00:00
Nils Breunese a1f4955dda
[MNG-8482] Use instanceof assignments to get rid of casting expressions (#2018)
Co-authored-by: Nils Breunese <nbreunese@bol.com>
Co-authored-by: Guillaume Nodet <gnodet@gmail.com>
2025-01-10 09:42:00 +01:00
Guillaume Nodet 5cef91e402
[MNG-8494] Restore Maven 3 compatibility (#2031) 2025-01-10 08:09:12 +01:00
Tamas Cservenak 71c662fa4c
[MNG-8473] Site fixes (#2010)
Maven4 site cleanup: make all new modules generating models also document them, expose them all and redirect all links to new documentation.

Lifecycle is the only thing missing, as it is generated on the fly, there is no more source to "point at"...

---

https://issues.apache.org/jira/browse/MNG-8473
2025-01-08 23:14:18 +01:00
Jermaine Hua 7546361a0d
[MNG-8475] In the loop scenario, StringBuilder is used instead of concatenation (#2014)
Signed-off-by: crazyhzm <crazyhzm@apache.org>

---

https://issues.apache.org/jira/browse/MNG-8475
2025-01-08 18:20:28 +01:00
Tamas Cservenak 209cd7fbe4
[MNG-8502] Embedded executor should obey MAVEN_ARGS env variable (#2032)
Salvaged from the "split repo for ITs" experiment. The experiment failed but this improvement is good to have, as makes the embedded executor behave more closely like forked executor.

Embedded so far did not obey MAVEN_ARGS env variable while forked did.

---

https://issues.apache.org/jira/browse/MNG-8502
2025-01-08 17:01:07 +01:00
Elliotte Rusty Harold b99eac7246
Copy edits in comments, API doc, and messages (#2020)
* Copy edits
2025-01-07 12:02:00 +00:00
Tamas Cservenak a2ee8f8bc2 Fix for HelperImplTest
The UT runs for 60 sec that is unacceptable. This fix
returns its runtime to 10+ sec.
2025-01-07 12:34:28 +01:00
Scott Kurz 900839135d
[MNG-8479] Use 'ejb' not 'ejb3' as type in ReactorReader artifact resolution for compile phase (#2016)
Use 'ejb' not 'ejb3' as type in ReactorReader artifact resolution for compile phase

Signed-off-by: Scott Kurz <skurz@us.ibm.com>

---

https://issues.apache.org/jira/browse/MNG-8479
2025-01-07 11:19:29 +01:00
Tamas Cservenak 0176ffb825
[MNG-8487] Completely isolate UTs (#2021)
UTs were using real user home, and in case user had user-wide extensions.xml, it resulted in failure. Goal: make sure all UTs are properly protected and isolated from user env, by providing "fake" user home (to not have user-wide extensions in real user home affect test outcome).

---

https://issues.apache.org/jira/browse/MNG-8487
2025-01-06 11:32:18 +01:00
Tamas Cservenak 1f157ad601
[MNG-8469] Fix interpolation precedence order (#2011)
Restore precedence as it was in Maven3:
- basedir
- buildTime
- prefixed model
- user props
- model props
- system props
- env
- prefixless model

---

https://issues.apache.org/jira/browse/MNG-8469
2024-12-28 14:34:58 +01:00
Guillaume Nodet 98dedaf0e3
[MNG-8465] Add support for project.rootDirectory in repositories and fix other expressions (#2007)
Valid expressions in repositories are:
* ${project.basedir}
* ${project.basedir.uri}
* ${project.rootDirectory}
* ${project.rootDirectory.uri}
2024-12-22 17:42:34 +01:00
Tamas Cservenak bebc3d4a2e
[MNG-8461] Initial settings method must restore context state (#2004)
Effective settings are (should be) created twice, once for "early boot" of Plexus when extensions are loaded up, and then again when Maven "boots".

Bug was that early call "corrupted" (inited settings) in context causing that 2nd required call (due spy) was omitted. This resulted in lack of settings related spy events firing (as we do have IT for spy but it does not test settings events).

---

https://issues.apache.org/jira/browse/MNG-8461
Related: https://github.com/alextu/maven4-reproducer/issues/1
2024-12-22 14:43:47 +01:00
Tamas Cservenak 751d3f18c9
[MNG-8463] Update plugins (#2005)
All the plugins referenced by Maven Core.

---

https://issues.apache.org/jira/browse/MNG-8463
2024-12-22 13:24:35 +01:00
Tamas Cservenak 80107b05d8
[MNG-8460] Implement flush() (#2006)
LoggingOutputStream used by default as sysout and syserr
were NOT flushing (def method is empty), and flush happened
only when EOL was printed.

Still, prompts and help:evaluate does print out unterminated
strings.

---

https://issues.apache.org/jira/browse/MNG-8460
2024-12-22 13:24:10 +01:00
Tamas Cservenak 575ad3719c
[MNG-8454] Force the FileSizeFormat UT to US Locale (#2003)
As it uses now String.format that produces different
decimal separator based on local, most notable DE

---

https://issues.apache.org/jira/browse/MNG-8454
2024-12-20 12:28:29 +01:00
Tamas Cservenak 0222aff6c9
[MNG-8447] Lossy ProblemCollector (#1994)
Historically (from Maven3) "problem collection" (in various scenarios, like building effective settings and toolchains, to building models) were done by passing around `List<Problem>` structure. This proved quite ineffective, as in case of (really) huge projects with quite big count of problems reported choked Maven (but also produced unusable output). We are aware of projects producing 3 million warnings! Dumping all of them onto console/log makes really no sense.

This PR changes Maven that by default it reports "problems" (settings building, toolchains building, or model building) as one liner warnings: how much and where were problems collected. This produces much more less overwhelming output than happens on master. User can control "build errors" using `-e`, so `mvn -e` will dump errors on screen/log.

The new `org.apache.maven.api.services.ProblemCollector<P>` class, that is somewhat "drop in" replacement for `List`, but with huge difference: it is "lossy", in a way, it maintains counters precisely, but actual problem instances are simply dropped after threshold `maven.builder.maxProblems` is surpassed (default 100). See `org.apache.maven.api.Constants#MAVEN_BUILDER_MAX_PROBLEMS`.

Rules:
* on problem addition counters are always updated
* if below threshold, store the problem (and will be reported later to the user)
* if above threshold, try to drop one problem with severity lower than currently reported problem, if succeeded, store the current problem, otherwise drop it

---

https://issues.apache.org/jira/browse/MNG-8447
2024-12-19 15:50:21 +01:00
Guillaume Nodet 8a69678007
[MNG-8446] Project cannot start due to too many warnings (#1993)
JIRA issue: [MNG-8446](https://issues.apache.org/jira/browse/MNG-8446)

This will help (but is not sufficient) to make [camel-quarkus](https://github.com/apache/camel-quarkus) buildable with maven 4.x.

---

https://issues.apache.org/jira/browse/MNG-8446
2024-12-17 18:44:55 +01:00
Guillaume Nodet a68b52fcba
[MNG-8444] Exclude maven-xml and maven-xml-impl (the artifact has been renamed) (#1992)
Exclude the transitives.

---

https://issues.apache.org/jira/browse/MNG-8444
2024-12-17 11:30:28 +01:00
Guillaume Nodet 698614e3cc
[MNG-8436] Fix wrong transfer rates displayed in console (#1985)
```
Downloaded from central: https://repo.maven.apache.org/maven2/org/graalvm/compiler/compiler/24.1.1/compiler-24.1.1.pom (1.7 kB at 9223372036854775807 GB/s)
```

---

https://issues.apache.org/jira/browse/MNG-8436
2024-12-17 10:57:01 +01:00
Jermaine Hua 99777ace02
[MNG-8433] Use the switch expressions syntax (#1983)
Signed-off-by: crazyhzm <crazyhzm@apache.org>

---

https://issues.apache.org/jira/browse/MNG-8433
2024-12-17 10:56:12 +01:00
Tamas Cservenak cc368b31e3
[MNG-8438] maven-jline: Migrate to Maven DI (off javax.inject) (#1987)
Move to Maven DI

---

https://issues.apache.org/jira/browse/MNG-8438
2024-12-17 10:51:50 +01:00
Tamas Cservenak 49825e6dba
[MNG-8437] mvnsh (#1982)
Maven shell

Changes:
* (unrelated) contains fix for property handling in embedded executor and in lookup invoker
* pulled `-o` (offline) option to "generic" Options from MavenOptions
* introduce mvnsh (scripts, options, CLIng main class)
* simplified invokers (only one context needed for maven now)
* invokers made "reentrant", it all depends HOW context is created

Related PRs:
* mvnd changes https://github.com/apache/maven-mvnd/pull/1228

---

https://issues.apache.org/jira/browse/MNG-8437
2024-12-17 10:50:45 +01:00
Guillaume Nodet 4714483009 [maven-release-plugin] prepare for next development iteration 2024-12-14 00:22:29 +01:00
Guillaume Nodet 273314404f [maven-release-plugin] prepare release maven-4.0.0-rc-2 2024-12-14 00:22:18 +01:00
Guillaume Nodet 5375f61a1d
[MNG-8414] Warn when not able to downgrade consumer POM unless preserveModelVersion is forced to true (#1981) 2024-12-14 00:10:59 +01:00
Guillaume Nodet ddae283c2b
[MNG-8245][MNG-8246] Warn when calling before: or after: phases (#1974) 2024-12-14 00:07:01 +01:00
Guillaume Nodet 5d449f9a24
[MNG-8244] Using before:all / all / after:all is not triggered (#1973) 2024-12-14 00:04:37 +01:00
Guillaume Nodet 1fd7f879a4
[MNG-5729] Fix transfer rate computation (#1969) 2024-12-14 00:03:27 +01:00
Tamas Cservenak 5897cfe68d
[MNG-8430] Resolver 2.0.5 (#1975)
* [MNG-8430] Resolver 2.0.5

Prepare for Resolver 2.0.5

---

https://issues.apache.org/jira/browse/MNG-8430

* Switch to staged release

---------

Co-authored-by: Guillaume Nodet <gnodet@gmail.com>
2024-12-14 00:01:58 +01:00
Guillaume Nodet ccbd50c975
[MNG-5729] Fix possible NPE with introduction of mononic clock (#1972) 2024-12-13 16:40:45 +01:00
Tamas Cservenak 50aecc7432
[MNG-8419][MNG-8424] Too aggressive warning for pre-Maven4 passwords (#1970)
Toned down the Maven4 sec dispatcher messages. Also, IF maven3 passwords detected AND there was `.mvn/extensions.xml` the warnings were doubled.

Examples:

Failure to start Maven (due non-decryptable passwords):
```
$ mvn clean
[ERROR] Error executing Maven.
[ERROR] Error building settings
 * FATAL: Could not decrypt password (fix the corrupted password or remove it, if unused) {xL6L/HbmrY++sNkphnq3fguYepTpM04WlIXb8nB1pk=}
 * WARNING: Detected 2 pre-Maven 4 legacy encrypted password(s) - configure password encryption with the help of mvnenc for increased security.
$
```

Warning at start (due Maven3 passwords):
```
$ mvn clean
[INFO]
[INFO] Some problems were encountered while building the effective settings (use -X to see details)
[INFO]
[INFO] Scanning for projects...
[INFO] --------------------------------------------------------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Apache Maven
...
```

---

https://issues.apache.org/jira/browse/MNG-8424
https://issues.apache.org/jira/browse/MNG-8419
2024-12-12 17:43:08 +01:00
Tamas Cservenak 0f15ad70e5
[MNG-8423] mvnenc -h (#1971)
Expand mvnenc help

---

https://issues.apache.org/jira/browse/MNG-8423
2024-12-12 15:23:28 +01:00
Guillaume Nodet 54ffc5014e
[MNG-5729] Use monotonic time measurements (#1965) 2024-12-12 12:02:17 +01:00
Tamas Cservenak 5b7a6de55a
[MNG-8421] Move all of logging setup to LookupInvoker; mvnenc IT (#1964)
Currently mvnenc is unable to log to file (-l) as logging setup is incomplete, move all of this logic to LookupInvoker. Also, create prompt in mvnenc only when needed. Finally, implement needed changes to support mvnenc ITs and add mvnenc IT.

Other changes:
* get rid of `distributionFileName` dirty hack, is remnant from old ITs
* fix CI re removal of that above and use of site that is brain-dead

---

https://issues.apache.org/jira/browse/MNG-8421
2024-12-12 09:43:12 +01:00
Guillaume Nodet 9c77221cbc
[MNG-8393] Enable consumer pom by default for 4.1.0 model version only (#1963) 2024-12-12 09:07:12 +01:00
Tamas Cservenak 6cb4482a98
[MNG-8411][MNG-8412][MNG-8416] mvnenc fixes (#1959)
Cumulative mvnenc fixes:
* make the 3 goals (sans init) work in batch mode
* move the Maven DI SecDispatcher provider to test scope in maven-impl (duplicates components in Maven)
* update to SecDisparcher 4.0.3 (contains fix for MNG-8416 and one other bug)

---

https://issues.apache.org/jira/browse/MNG-8411
https://issues.apache.org/jira/browse/MNG-8412
https://issues.apache.org/jira/browse/MNG-8416
2024-12-11 10:13:06 +01:00
Guillaume Nodet 781d19d9f1
[MNG-8410] Rename maven-api-meta to maven-api-annotations (#1957) 2024-12-10 22:43:27 +01:00
Guillaume Nodet 1b5b5c8f9e
[MNG-8415] Add constant for the security settings xml file (#1956)
* Add a constant for the security settings file
* Avoid usage of system properties by using the ProtoSession
* Regen
2024-12-09 13:19:44 +01:00
Jermaine Hua d6edb027c3
[MNG-8388] Fix escape characters being replaced to change the original configuration (#1946)
* [MNG-8388] Fix escape characters being replaced to change the original configuration

Signed-off-by: crazyhzm <crazyhzm@apache.org>

* Add unit test

---------

Signed-off-by: crazyhzm <crazyhzm@apache.org>
Co-authored-by: Guillaume Nodet <gnodet@gmail.com>
2024-12-05 19:36:08 +01:00
Guillaume Nodet 789e2de812
[MNG-8404] ModelValidator: add unit tests and simplify a bit (#1948) 2024-12-05 15:16:47 +01:00
Guillaume Nodet 93e0f1bb79
[MNG-8405] Fail On Severity, when set, is not reset (in resident instances) (#1950)
Make it reset that does not leave dangling values for next invocation.

---------

https://issues.apache.org/jira/browse/MNG-8405

Co-authored-by: Tamas Cservenak <tamas@cservenak.net>
2024-12-05 12:37:18 +01:00
Tamas Cservenak e74bde05c9
[MNG-8403] Maven ITs use maven-executor (#1940)
The goal of this PR is manifold, but major one is to be able to use in ITs new options introduced in Maven4. Currently the "embedded" mode supports only Maven3 options, as Maven4 got new CLI entry point (CLIng), while verifier uses old MavenCli entry point, that is also deprecated. Finally, a full cleanup of (black) magic happened as well, keep ITs simple and clean.

Changes:
* dropped from ITs classpath maven-shared-util
* dropped from ITs classpath maven-verifier, copied last master Verifier to maven-it-helper and modified
* enhancements to new maven-executor to make it fully replace maven-verifier
* ITs are now using new infra and are using new CLIng "entry point" as well (so far ITs used deprecated maven-embedder/MavenCLI class).

---

https://issues.apache.org/jira/browse/MNG-8403
2024-12-05 09:02:41 +01:00
Guillaume Nodet 73e30c5d6f
[MNG-8402] System properties can take precedence over builtin expressions (#1947) 2024-12-04 17:54:29 +01:00
Tamas Cservenak 794efae428
[MNG-8400] Make sure base parser uses canonical maven.home (#1945)
As currently it is mixing canonical paths with non-canonical ones.

---

https://issues.apache.org/jira/browse/MNG-8400
2024-12-03 13:50:31 +01:00
Guillaume Nodet 62f85a4233
[MNG-8396] Add a cache layer to the filtered dependency graph (#1944) 2024-12-02 05:19:26 +01:00
Guillaume Nodet a58551d9ab [MNG-8391] Wrong effective model when conflicting values come from parents and profiles 2024-12-01 20:41:22 +01:00
Guillaume Nodet 175e219a56 Remove usages of Properties 2024-12-01 20:41:22 +01:00
Tamas Cservenak cf421eee87
[MNG-8389] MavenExReq lacks u/p/i settings file paths (#1939)
* [MNG-8389] MavenExReq lacks u/p/i settings file paths

The "effective" paths for 3 settings file was not set on
MavenExecutionRequest.

---

https://issues.apache.org/jira/browse/MNG-8389
2024-11-29 21:54:36 +01:00