Commit Graph

1773 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 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
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 79d7739dcc
[MNG-8406] Proper IT isolation (#1968)
Implement proper IT isolation, in a way, that user running ITs should not have it's own env "mixed in" into IT runs. In essence, use "alternate" `user.home` for ITs. Also use proper means to set user home. This will also stop fork 4 ITs (as they were forked due presence of env variable).

Note: yes, this causes longer IT execution time (as can be seen), as the ITs user home (core-it-suite/target/user-home) starts as empty (tail is set to "outer" local repo), so ITs do download stuff.

---

https://issues.apache.org/jira/browse/MNG-8406
2024-12-12 15:24:03 +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 01e47259d2
IT: Streamline ITs more (#1952)
Changes:
* remove unneeded POM cruft
* remove embedded profile (is default) introduce forked profile
* CI: drop "embedded" profile use
2024-12-05 17:03:20 +01:00
Tamas Cservenak f7f6281e13
IT: Drop dead stuff (#1951)
These are ancient ITs that are and were disabled forever. They were compiled, their resources copied and all, just to not contribute anything to build/ITs.
2024-12-05 14:40:43 +01:00
Tamas Cservenak 8cd6f83e73
[MNG-8403] Collapse IT utils and helpers (#1949)
Changes:
* move all into same package
* stop direct use of ResourceExtractor, redirect all ITs to superclass method
* drop unneeded ResourceExtractor, it never "extracts" anything
* un-fork ITs where applicable (ie. due new CLI param or so that was not supported before)

---

https://issues.apache.org/jira/browse/MNG-8403
2024-12-05 13:40:02 +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
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
Tamas Cservenak d7917e4345
IT: Move ITs off maven-shared-utils (#1941)
No dependency change yet, just remote all the use of
maven-shared-utils from IT classes. Plexus Utils in
present anyways, but also modern Java offers many
of used stuff as well.
2024-11-28 11:36:19 +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 88c6ff5e7e
IT: Consolidate ITs somewhat (#1924)
Align versions where possible, remove dead stuff.

Ant based Mojos were deprecated in Maven3 era, and
this is Maven4, so no need to test this. Is full
of ancient artifacts anyway.
2024-11-19 14:30:27 +01:00
dependabot[bot] a8057b0920
IT: Bump org.apache.maven.wagon:wagon-webdav-jackrabbit from 3.0.0 to 3.5.3 (#1923)
Bumps org.apache.maven.wagon:wagon-webdav-jackrabbit from 3.0.0 to 3.5.3.

---
updated-dependencies:
- dependency-name: org.apache.maven.wagon:wagon-webdav-jackrabbit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-19 11:51:29 +01:00
Guillaume Nodet bbf57bca60
[MNG-8383] Fix unsupported type dependencies put on classpath (#1921) 2024-11-19 00:56:12 +01:00
dependabot[bot] ce096fea3e
Bump org.sonatype.maven.plugin:emma4it-maven-plugin from 1.2 to 1.3 (#1918)
Bumps org.sonatype.maven.plugin:emma4it-maven-plugin from 1.2 to 1.3.

---
updated-dependencies:
- dependency-name: org.sonatype.maven.plugin:emma4it-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-18 09:54:18 +01:00
Guillaume Nodet 12b3dae3ce
Add CI cache (#1914)
* Add cache for all steps
* Pass through the maven.repo.loca.tail property
2024-11-17 15:50:32 +01:00
Guillaume Nodet c4834efdba
Move everything out of bootstrap (#1909) 2024-11-16 18:50:22 +01:00
Tamas Cservenak 1614226c68
[MNG-8379] Decrypt all of settings on building it (#1913)
The decryption should happen transparently, also, resolver should not decrypt for itself only, whole maven should have access to all.

This PR also disables Maven 3.0 IT MNG-4459 as Maven4 stops with this "security through obscurity" (keep encrypted pw in memory kinda for "security reasons" but in reality any mojo or extension can decrypt anything they want).

---

https://issues.apache.org/jira/browse/MNG-8379
2024-11-16 14:55:43 +01:00
Guillaume Nodet 4b0dd4362a
Cleanup file access and assertions in ITs (#1912) 2024-11-15 13:08:33 +01:00
Guillaume Nodet a14732597b
[MNG-8336] Only inject plugins information if requested (#1904) 2024-11-15 10:24:21 +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 f36f8e1bd6
IT: update archaic deps (#1903)
This PR is based on dependabot PRs but they require code changes as well.

Based on:
* https://github.com/apache/maven/pull/1895
* https://github.com/apache/maven/pull/1889
2024-11-13 16:00:55 +01:00
P. Ottlinger 4b18bfb9a8
[MNG-8372] Augment error message to give users more context when running into deprecated encryption warning (#1898)
Augment error message to give users more context when running into deprecated encryption warning

---

https://issues.apache.org/jira/browse/MNG-8372
2024-11-13 15:15:57 +01:00
dependabot[bot] 49482c53fc
IT: Bump org.hamcrest:hamcrest from 2.2 to 3.0 (#1900)
Bumps [org.hamcrest:hamcrest](https://github.com/hamcrest/JavaHamcrest) from 2.2 to 3.0.
- [Release notes](https://github.com/hamcrest/JavaHamcrest/releases)
- [Changelog](https://github.com/hamcrest/JavaHamcrest/blob/master/CHANGES.md)
- [Commits](https://github.com/hamcrest/JavaHamcrest/compare/v2.2...v3.0)

---
updated-dependencies:
- dependency-name: org.hamcrest:hamcrest
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-12 20:35:01 +01:00
dependabot[bot] 0752547314
IT: Bump org.apache.maven.shared:maven-shared-utils from 0.9 to 3.4.2 (#1896)
Bumps [org.apache.maven.shared:maven-shared-utils](https://github.com/apache/maven-shared-utils) from 0.9 to 3.4.2.
- [Release notes](https://github.com/apache/maven-shared-utils/releases)
- [Commits](https://github.com/apache/maven-shared-utils/compare/maven-shared-utils-0.9...maven-shared-utils-3.4.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.shared:maven-shared-utils
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 12:10:32 +01:00
Tamas Cservenak a836e898b0
IT: cleanup (#1886)
Yet another round

Changes:
* get rid of Guava (2 classes affected)
* align dependencies
* align plugins
2024-11-07 12:43:46 +01:00
dependabot[bot] 8f2ef8ebe1
Bump org.eclipse.jetty:jetty-server in /its/core-it-suite (#1872)
Bumps org.eclipse.jetty:jetty-server from 9.4.53.v20231009 to 9.4.55.v20240627.

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-server
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-06 13:58:58 +01:00
Guillaume Nodet 75258afcc6 Integrate into maven's build 2024-11-05 16:56:49 +01:00
Guillaume Nodet 4270e7883f Simplify hocon IT to not rely on a complex parent POM 2024-11-05 16:56:46 +01:00
Tamas Cservenak 9e62984ae3 [MNG-8347] Additional tests (#398)
Add additional cases as original test is not the full story.
Make sure tree is same even if pushed down a level (in Maven3 is not)

---

https://issues.apache.org/jira/browse/MNG-8347
2024-10-29 10:00:06 +01:00
Guillaume Nodet 216c16c4b3 [MNG-8360] IT for subproject profile activation (#396) 2024-10-25 17:33:53 +02:00
Tamas Cservenak 8dc7f3b990 [MNG-8347] IT for transitive dependency management (#395)
Add IT for transitive dep management. The fix should come with updated Resolver 2.0.3

---

https://issues.apache.org/jira/browse/MNG-8347
2024-10-25 15:38:54 +02:00
Guillaume Nodet 94049cd8c5 [MNG-8341] Add IT for deadlock during model building (#394) 2024-10-25 10:29:16 +02:00
Maarten Mulders fc444a4dec [MNG-8331] Demonstrate the problem with disappearing dependencies
Closes 393.
2024-10-19 19:53:52 +02:00
Guillaume Nodet 314e983f74 [MNG-8258] Change the fixed reproducible build outputTimestamp to 1 Feb 1980 (#392) 2024-10-17 16:52:40 +02:00
Guillaume Nodet d8f9b3f40b [MNG-8322] The EventSpy receives the new settings request/result (#391) 2024-10-17 11:25:42 +02:00
Guillaume Nodet eff246a5bf [MNG-8299] IT for custom lifecycle phase ordering (#389)
Main PR: https://github.com/apache/maven/pull/1802

---

https://issues.apache.org/jira/browse/MNG-8299
2024-10-16 16:19:22 +02:00
Guillaume Nodet d98fe8e9f0 [MNG-8295] Add IT for Dependency Manager Transitivity (#384)
Co-authored-by: DidierLoiseau <didierloiseau+github@gmail.com>
2024-10-15 14:25:54 +02:00
Guillaume Nodet 83f034d177 [MNG-8294] Consistency checks when loading parent (#383) 2024-10-09 13:07:21 +02:00
Guillaume Nodet 2ce2200086 [MNG-8293] [MNG-8288] Two new ITs and disable MNG-2196 IT (#382)
* Two new ITs for MNG-8288 and MNG-8293

Both problems happens during reactor load up, so ITs code
is simple, just invoke "mvn validate" while the actual trick
is in resources (projects).

* Fix javadoc

* Disable MNG-2196 IT as it can infer the parent

---------

Co-authored-by: Tamas Cservenak <tamas@cservenak.net>
2024-10-07 17:32:18 +02:00
Tamas Cservenak 2e0d09ec7e Workaround just to test this 2024-10-03 17:46:10 +02:00
Tamas Cservenak 0bfde6311c [MNG-8282] Disable MNG-0553 IT for Maven 4-beta5+ (feature reworked)
---

https://issues.apache.org/jira/browse/MNG-8282
2024-10-03 17:46:10 +02:00
Tamas Cservenak e2890989c1 [MNG-8267] Disable MNG-5774 ITs for beta-5+
Also minor fix, but MavenITmng8220ExtensionWithDITest needs
slf4j-api 2.0.16 that is not in bootstrap.

---

https://issues.apache.org/jira/browse/MNG-8267
2024-10-03 17:46:10 +02:00
Guillaume Nodet 4e1de4ef6e [MNG-8133] IT for ${project.rootDirectory} in external parent (#368) 2024-10-02 23:27:02 +02:00
Guillaume Nodet fa8432713a [MNG-8281] Change the outcome of an IT wrt interpolation (#370) 2024-10-02 23:25:37 +02:00
Guillaume Nodet c5211f95cb [MNG-8258] activate Reproducible Builds by default (#369) 2024-10-01 16:50:50 +02:00