Commit Graph

241 Commits

Author SHA1 Message Date
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
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 5d449f9a24
[MNG-8244] Using before:all / all / after:all is not triggered (#1973) 2024-12-14 00:04:37 +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 a85ec9ffcc
Add missing package infos (#1980) 2024-12-13 16:40:20 +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
Guillaume Nodet 54ffc5014e
[MNG-5729] Use monotonic time measurements (#1965) 2024-12-12 12:02:17 +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
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
Tamas Cservenak 9238d2ffeb [maven-release-plugin] prepare for next development iteration 2024-11-25 11:57:49 +01:00
Tamas Cservenak d81b1b6a28 [maven-release-plugin] prepare release maven-4.0.0-rc-1 2024-11-25 11:57:24 +01:00
Tamas Cservenak 7ad2578e77
[MNG-8386] Pull out executor (#1932)
Yet another CLIng cleanup.

Changes:
* pull out Executor, it does not belong to CLIng (new maven-executor module created with no deps)
* resident and maven invoker fixes (proper handling of resources now), no more SO/OOMs
* enabled UTs in maven-cli (that revealed the issues)
* small bug fixes discovered in cli, improved executor to reveal maven version

---

https://issues.apache.org/jira/browse/MNG-8386
2024-11-22 15:09:32 +01:00
Guillaume Nodet 986f59683e
[MNG-8286] Add a condition profile based on a simple expressions (#1771) 2024-11-20 21:36:48 +01:00
Tamas Cservenak fcd9c0f018
[MNG-8385] Introduce proto session, make CLIng use PropertyContributor (#1929)
And make use of it in CLIng. Also, move from "late" Resolver session factory to "early" CLIng invocation of `PropertyContributor` SPI and make contribution visible across whole Maven, not only Resolver.

---

https://issues.apache.org/jira/browse/MNG-8385
2024-11-20 20:58:27 +01:00
Tamas Cservenak 8dec40ff57
Rename versionFilter property and tidy up documentation (#1920)
This property was introduced in 4-alpha-12, so no issue just
putting the property in place.
2024-11-18 11:45:50 +01:00
Tamas Cservenak ab7d766c72
Exception usage cleanup (#1910)
This is just a cleanup of exception usage (by making them checked, fixing compiler issues, and undoing the change). There are at least two bugs (runtime escapes) fixed in this PR.
2024-11-16 21:36:20 +01:00
Guillaume Nodet 46707e0f28
[MNG-8340] Resolve parent according to the exact model location (#1857) 2024-11-13 20:26:56 +01:00
Tamas Cservenak 903cf59b0b Add missing annotation 2024-11-13 17:00:46 +01:00
Tamas Cservenak a67d2746af
[MNG-8375] CLIng diet (#1897)
First part was to "reverse" MavenCli into CLIng, that also became a huge and complex beast. Now, sanitization comes, tearing down unneeded stuff. CLIng should be simple and straightforward.

Now the **invoker** fully parses args, creates Maven instance (ie. local, using Maven components on classpath) and invokes Maven. The new **executor** in turn does NOT fully parses args and is logical equivalent of maven-invoker.

Changes:
* radically simplify CLIng existing classes (and especially API - the fact we have "local", "resident" etc invoker is actually implementation detail).
* introduce "executor", a "lower level" tool that does not parse args (and is logical equivalent of maven-invoker) and support Maven 4.x and Maven 3.x.

---

https://issues.apache.org/jira/browse/MNG-8375
2024-11-13 15:14:56 +01:00
Tamas Cservenak 457bb8e000
CLIng: finish TODO (#1888)
Also clear up javadoc.
2024-11-07 17:41:13 +01:00
Tamas Cservenak 1ab2ccf066
Add maven.repo.local.head (#1881)
As counterpart to maven.repo.local.tail, but this one "prepends" while other "appends". This means one can do like this

```
$ mvn install -Prun-its -Dmaven.repo.local.head=~/.m2/repository-it
```

And have stuff installed into dedicated IT local repo (as IT bits must be installed), instead to pollute own local repo.

---

https://issues.apache.org/jira/browse/MNG-8370
2024-11-07 11:14:15 +01:00
Tamas Cservenak dfd5ec5f85
[MNG-8362] Adding some missing config properties (#1861)
To have them listed in generated docs, as they were forgotten.
Also, adding a "compat" support for Maven 3.9.x property for chained reposes.

---

https://issues.apache.org/jira/browse/MNG-8362
2024-11-05 17:06:57 +01:00
Guillaume Nodet 8005826df7 [MNG-8361] Fix typo in color styles 2024-11-02 10:29:52 +01:00
Guillaume Nodet 2a6fc5ab67
[MNG-8329] ArtifactInstallerRequest and ArtifactDeployerRequest should use Collection<ProducedArtifact> (#1836) 2024-10-25 18:43:07 +02:00
Guillaume Nodet f6528183f2
[MNG-8361][MNG-8300] Fix color styles" (#1851)
* [MNG-8361] Document color styles properly
* [MNG-8300] Revert to bright-black to restore transfer colors
2024-10-25 14:24:08 +02:00
Guillaume Nodet 2e01948c1e
[MNG-8345] Maven generates both settings 1.3.0 and 2.0.0 (#1835) 2024-10-24 17:53:41 +02:00
Guillaume Nodet dc6d48ce00
[MNG-8330] Enforce attached artifacts to have the same GAV than their project (#1838) 2024-10-24 13:52:48 +02:00
Guillaume Nodet 3425b4dd08
[MNG-8334] Fix output redirection (#1826) 2024-10-22 16:53:58 +02:00
Tamas Cservenak 4b9e350985 [maven-release-plugin] prepare for next development iteration 2024-10-19 20:11:20 +02:00
Tamas Cservenak 6e78fcf6f5 [maven-release-plugin] prepare release maven-4.0.0-beta-5 2024-10-19 20:10:56 +02:00
Tamas Cservenak 3ecf9124ca Revert "[maven-release-plugin] prepare release maven-4.0.0-beta-5"
This reverts commit d82ef1a372.
2024-10-19 20:08:03 +02:00
Tamas Cservenak 87912b6554 Revert "[maven-release-plugin] prepare for next development iteration"
This reverts commit f4eeca2472.
2024-10-19 20:07:37 +02:00
Tamas Cservenak f4eeca2472 [maven-release-plugin] prepare for next development iteration 2024-10-18 17:54:38 +02:00
Tamas Cservenak d82ef1a372 [maven-release-plugin] prepare release maven-4.0.0-beta-5 2024-10-18 17:54:23 +02:00
Tamas Cservenak 076c4dfeb7 Revert "[maven-release-plugin] prepare release maven-4.0.0-beta-5"
This reverts commit 2bcd571b56.
2024-10-18 17:05:06 +02:00
Tamas Cservenak ec2a8054c1 Revert "[maven-release-plugin] prepare for next development iteration"
This reverts commit 1813f06f86.
2024-10-18 17:04:56 +02:00
Tamas Cservenak 1813f06f86 [maven-release-plugin] prepare for next development iteration 2024-10-18 16:34:31 +02:00
Tamas Cservenak 2bcd571b56 [maven-release-plugin] prepare release maven-4.0.0-beta-5 2024-10-18 16:34:04 +02:00
Guillaume Nodet 69b34f4f3c
[MNG-8322] Use the new ToolchainsBuilder and SettingsBuilder (#1778) 2024-10-17 11:25:53 +02:00
Tamas Cservenak 95e59f2437
[MNG-8302] Warn when appropriate (#1810)
First, `rootDirectory` is nullable, CLIng code was not assuming this, fixed.
Second, emit the "no root found" warning ONLY when appropriate (when we have a POM in picture).

---

https://issues.apache.org/jira/browse/MNG-8302
2024-10-17 10:06:47 +02:00
Guillaume Nodet 1cff5947ac
Revert "Make rootDirectory really mandatory" (#1800)
This reverts commit 608a99fb08.

---

https://issues.apache.org/jira/browse/MNG-8302
2024-10-16 16:22:26 +02:00
Guillaume Nodet 0d04bb9a21
[MNG-8041] Move PathScope into the dependency collection request (#1807)
JIRA issue: [MNG-8041](https://issues.apache.org/jira/browse/MNG-8041)
IT PR: https://github.com/apache/maven-integration-testing/pull/390
2024-10-16 16:15:37 +02:00
Guillaume Nodet 740100b50c
[MNG-8309] Improve log infrastructure (first step toward multi-threading log view support) (#1792)
Move logging infrastructure to support multi threaded output from mvnd to maven.
Refactor a bit the terminal/log creation done by Cling.
2024-10-15 15:30:39 +02:00
Tamas Cservenak f5e54ca6fa
[MNG-8285] Implement mvnenc CLI tool (#1793)
Implements the `mvnenc` tool that is on par with Maven3 master password encryption functionality wise, but is _really secure_ unlike Maven3 conterpart. On the other hand, _is backward compatible if legacy config is setup_.

Implemented goals: `init`, `encrypt`, `decrypt`, `diag`. Also provides one extra "master source" based on Maven infra Prompter: console master password prompt.

---

https://issues.apache.org/jira/browse/MNG-8285
2024-10-14 21:57:22 +02:00
Tamas Cservenak 7df5b16f78
[MNG-8305] Fix MER showErrors setting (#1795)
---

https://issues.apache.org/jira/browse/MNG-8305
2024-10-14 19:33:06 +02:00
Guillaume Nodet fee69f2f89
[MNG-8294] Consistency checks when loading parent (#1784) 2024-10-09 13:07:31 +02:00