Commit Graph

3423 Commits

Author SHA1 Message Date
Guillaume Nodet a2cbf4873a [maven-release-plugin] prepare release maven-4.0.0-alpha-8 2023-10-20 21:20:23 +02:00
Guillaume Nodet 61f08f326d Fix build/consumer pom transformation wrt attached artifacts 2023-10-20 21:18:46 +02:00
sebastien-doyon d362690a82
[MNG-7899] Various memory usage improvements 5 (#1270)
Multiple optimizations :
- renderLevel() method use static constants instead of rebuilding the strings on each call
- replace + operator usage with more PrintStream.print() calls to reduce temporary strings creation
- reduce usage of MessageBuilder.a() method usage with more PrintStream.print() calls to reduce temporary strings creation
- replace the builder() method with a static import
- replace String.format with a simple string concat to reduce memory allocation (garbage)
- change static constants to class member in MavenSimpleLogger
- add a setLength(int) method in MessageBuilder to enable reuse
2023-10-20 16:30:44 +02:00
Guillaume Nodet a734e2a336
Get rid of deprecated method in the v4 Session interface (#1292) 2023-10-20 07:54:44 +02:00
Guillaume Nodet 92a82dcefd
[MNG-6437] Better support for path and uri in property interpolation (#812) 2023-10-17 19:55:08 +02:00
Guillaume Nodet 14d16064f6
Fix unneeded/wrong substring calls in expression evaluation and put back weak references in cache (#1258) 2023-09-27 09:28:31 +02:00
Guillaume Nodet 558dfc9c6e
[MNG-7880] Trim down consumer POM (#1247) 2023-09-26 08:51:42 +02:00
Guillaume Nodet 10fa5c713a
[MNG-7893] Allow versioning the superpom according to the model version (#1253) 2023-09-26 07:17:52 +02:00
Slawomir Jaranowski 2a188e75a1 [MNG-7896] Upgrade Junit from 5.9.1 to 5.10.0 2023-09-24 22:16:12 +02:00
Guillaume Nodet 6bf55cfc11
[MNG-7879] Add a bom packaging (#1242)
The purpose of the BOM packaging is to more cleanly identity POM that will be consumed as BOM from POM that will be used as parents.  The BOMs can be turned into a consumer POM, whereas parents can not loose any information.
2023-09-22 12:53:44 +02:00
sebastien-doyon dec90acf24
[MNG-7866] Improvements to the logging API usage (technical debt) (#1220) 2023-09-22 11:07:17 +02:00
Guillaume Nodet 10487d7b5d
[MNG-7820] Get rid of plexus-utils (#1255) 2023-09-22 10:59:31 +02:00
Guillaume Nodet dd2f1214d6
[MNG-7891] Support configuration for extensions (#1252) 2023-09-22 09:14:56 +02:00
Guillaume Nodet aefa9599fb
Avoid usage of XmlStreamReader (#1256) 2023-09-22 09:03:47 +02:00
Guillaume Nodet eb20034763 Simplify ReactorModelPool and use a concurrent map 2023-09-22 08:34:51 +02:00
Guillaume Nodet 59a8d90397 Add a o.a.maven.api.services.Source#resolve method 2023-09-22 08:34:51 +02:00
Guillaume Nodet 1865c9c6fd Fix bad version in test poms 2023-09-22 08:34:51 +02:00
Guillaume Nodet d5a8e33617 Make DefaultModelBuildingListener#project field final 2023-09-22 08:34:51 +02:00
Guillaume Nodet fd4493580a
[MNG-7820] Get rid of plexus-utils introspection classes (#1251) 2023-09-22 08:02:25 +02:00
Guillaume Nodet e91cee9a2d
[MNG-7820] Get rid of plexus-utils DAG class (#1250) 2023-09-22 08:02:04 +02:00
Guillaume Nodet 0c37cff681
[MNG-7820] Get rid of plexus-utils Os class (#1249) 2023-09-22 08:01:36 +02:00
Guillaume Nodet 1eae6684e3
[MNG-7881] Expose the rootDirectory for model processing (#1245) 2023-09-19 16:31:35 +02:00
Guillaume Nodet 34b0591f03
[MNG-7820] Remove dependency on plexus-utils StringUtils / FileUtils (#1243)
Co-authored-by: crazyhzm <crazyhzm@apache.org>
2023-09-14 13:48:15 +02:00
Slawomir Jaranowski ce8fc3a31c [MNG-7878] Extend test for ConsumerPom and modules in plugin configuration 2023-09-14 09:51:37 +02:00
Guillaume Nodet c6380108b1
[MNG-7877] Attach the build POM and simplify build/consumer implementation (#1240)
.. at the cost of loosing xml formatting in the consumer POMs
2023-09-13 13:39:50 +02:00
Guillaume Nodet 45075233c7
[MNG-7876] Add model version analysis and downgrade (#1235) 2023-09-11 18:17:26 +02:00
Guillaume Nodet 46fd5e9586
Add ModelLocator#locateExistingPom to abstract a bit more (#1237) 2023-09-11 18:15:00 +02:00
Guillaume Nodet e71d2d7167
Improve o.a.m.api.services.Source interface (#1236) 2023-09-11 18:14:36 +02:00
Guillaume Nodet 7d6f90e8d0
Move Features to api (#1232) 2023-09-11 00:42:53 +02:00
Guillaume Nodet dde369b6fc [MNG-7810] Provide a SPI for the v4 api
# Conflicts:
#	maven-bom/pom.xml
2023-09-11 00:38:45 +02:00
Guillaume Nodet 0b3246381d
Remove useless @author tags (#1226)
This information is usually more accurately given by the GIT history
2023-09-06 10:39:32 +02:00
Guillaume Nodet 06938249a7
[MNG-7792] Use a standalone asm version (#1126) 2023-09-05 23:09:03 +02:00
Guillaume Nodet 64b32c0bb4
[MNG-7871] Fix location tracking (#1222) 2023-09-05 18:06:44 +02:00
Guillaume Nodet 98ec2eb1c8
[MNG-7861] Remove artifacts which should be kept hidden (#1221) 2023-09-01 22:26:41 +02:00
Guillaume Nodet 22ae75a304
[MNG-7843] Allow glob patterns in dependency exclusions (#1200) 2023-08-29 17:25:58 +02:00
huazhongming 7d66d19f8b
[MNG-7822] Add support for TRACE logging level (with style "bold,magenta") (#1215)
Signed-off-by: crazyhzm <crazyhzm@apache.org>
2023-08-25 17:51:43 +02:00
Guillaume Nodet f2593b97ef
[MNG-7862] The ModelLocator should always be used when locating pom.xml (#1217) 2023-08-23 21:25:14 +02:00
Tamas Cservenak 059e3c5914
Fix dependabot alerts (#1214)
(that are not applicable, but look ugly).

These tests are NOT built, but are taken from real projects
several years ago, and used in POM related UTs.

Hence, for example update of velocity is completely okay,
even if in "real life" it would not compile.
2023-08-03 11:29:10 +02:00
Tamas Cservenak 36db1e35ca
[MNG-7846] Break out of endless loop (#1206)
This is most probably "just" about broken Throwable implementations.
Some override getCause but does not perform checks to what it was inited
as "this" means "not yet inited" actually.

---

https://issues.apache.org/jira/browse/MNG-7846
2023-07-19 17:37:28 +02:00
Guillaume Nodet 9b12ccdeb0
Rename Type#getName() to getId() and improve javadoc (#1198) 2023-07-06 09:20:03 +02:00
Guillaume Nodet 8f45d51bd6 Prefer using String.isEmpty over String.length()>0 2023-07-04 08:36:08 +02:00
Guillaume Nodet 08979553f2 Prefer Files.newInputStream 2023-07-04 08:36:08 +02:00
Guillaume Nodet e39142b77a
[MNG-7830] Switch from plexus-xml to stax / woodstox (#1185) 2023-06-29 12:03:50 +02:00
Guillaume Nodet 5b540821f2 [maven-release-plugin] prepare for next development iteration 2023-06-24 10:52:55 +02:00
Guillaume Nodet bf699a388c [maven-release-plugin] prepare release maven-4.0.0-alpha-7 2023-06-24 10:52:47 +02:00
Guillaume Nodet dbfcfd5eb3
[MNG-7228] MavenProject.getOriginalModel returns interpolated parts (#1183) 2023-06-24 10:51:08 +02:00
Guillaume Nodet a279289bc3 [maven-release-plugin] prepare for next development iteration 2023-06-23 15:08:35 +02:00
Guillaume Nodet a3f0f12fab [maven-release-plugin] prepare release maven-4.0.0-alpha-6 2023-06-23 15:08:27 +02:00
Tamas Cservenak 764a9ca0be [MNG-7823] Improve plugin validation level parsing (#1182)
Changes:
* always parse it at session start
* hence, will WARN if needed there as well, and will warn once
* do not re-parse and possibly warn always, reuse parsed enum

---

https://issues.apache.org/jira/browse/MNG-7823
2023-06-23 13:05:57 +02:00
Guillaume Nodet 229b31b626
[MNG-4645] Move Central repo definition out of Maven's core so it can be more easily changed (#1139)
Co-authored-by: Christian Schulte <schulte@apache.org>
2023-06-19 17:04:04 +02:00
Guillaume Nodet 0a8491c329
[MNG-7814] Use location tracking for settings (#1164) 2023-06-19 12:39:14 +02:00
Guillaume Nodet e6303aae32
[MNG-5659] Provide project-specific settings located in ${session.rootdir}/.mvn/settings.xml by default (#1059) 2023-06-19 12:32:14 +02:00
Karl Heinz Marbaise 5ebbb8ff50
[MNG-7764] Small code improvements (#1088) 2023-06-16 10:54:09 +02:00
Slawomir Jaranowski 09e58d188c [MNG-7811] Plugins verification - reporting improvements
cherry-pick e625606588
2023-06-16 09:47:44 +02:00
Guillaume Nodet a2d435b74a
Get rid of maven-shared-utils (#1158)
Given maven-shared-utils is being deprecated (see MSHARED-1269), we need to remove its usage in maven.  Maven core only uses the logging/message related classes from maven-shared-utils, so this PR enhance the initial v4 api with the needed interfaces and move the jansi specific code into maven-embedder.
2023-06-15 16:51:32 +02:00
Guillaume Nodet 967d8fc19c
[MNG-7794][MNG-7809] Deprecate RepositorySystem and make maven-compat optional (#1150)
* Move maven-compat to jsr330
* Remove more ties to RepositorySystem
* Move more stuff to maven-compat
* Move PluginManager and LocalRepositoryNotAccessibleException to maven-compat
* Fix tests
* Break circular dependency loop in components
* Move unused deprecated classes
2023-06-15 16:24:56 +02:00
Tamas Cservenak 4f8648af7b
[MNG-7790] Update lifecycle plugins, take 2 (#1163)
Changes:
* war 3.3.3 -> 3.4.0

---

https://issues.apache.org/jira/browse/MNG-7790
2023-06-15 14:09:06 +02:00
Hervé Boutemy 6ee2c5c442 [MNG-5987] document goals execution order
fixes #1145
2023-06-14 07:48:39 +02:00
Guillaume Nodet 898e4e4b3c
Simplify code (#1156) 2023-06-13 22:45:33 +02:00
Slawomir Jaranowski 973b1b9684 [MNG-7806] Plugins verification - remove used in module(s) report
cherry-pick: 3135553e2d
2023-06-13 21:22:42 +02:00
Guillaume Nodet 56ee6a878d
[MNG-7751] Provide a way to inject XmlNode into plugins (#1071) 2023-06-12 21:39:23 +02:00
Tamas Cservenak be3625d190
[MNG-7790] Update lifecycle plugins (#1154)
Changes:
install: 3.1.0 -> 3.1.1
deploy: 3.1.0 -> 3.1.1
resources: 3.3.0 -> 3.3.1
compiler: 3.10.1 -> 3.11.0
surefire: 3.0.0 -> 3.1.2
plugin: 3.7.0 -> 3.9.0
wrapper: 3.1.1 -> 3.2.0

---

https://issues.apache.org/jira/browse/MNG-7790
2023-06-12 11:18:02 +02:00
Guillaume Nodet c79a7a0272
[MNG-7740] Remove old temporary consumer*pom files from buildDir (#1117)
Co-authored-by: Giovanni van der Schelde <Giovanni.vanderSchelde@infosupport.com>
2023-06-05 10:47:13 +02:00
Guillaume Nodet e08c95a673
[MNG-7655] Switch to plexus-utils / plexus-xml 4 (#1093) 2023-06-04 21:03:41 +02:00
Guillaume Nodet b2953c52d5
[MNG-7795] IllegalArgumentException: 'other' has different root during plugin validation (#1133)
Checks the paths before relativizing them.
Normalize and relative before adding to result
Rename local vars
Apply to ExecutionEventLogger

---

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

Co-authored-by: Andreas Dangel <adangel@apache.org>
2023-06-01 19:05:48 +02:00
Tamas Cservenak b430e7d826 [MNG-7799] Plugin validation may falsely report there are issues (#1136)
But to show no issue, as locality to be shown is not same as reported
issues.

---

https://issues.apache.org/jira/browse/MNG-7799
2023-06-01 19:01:11 +02:00
Henning Schmiedehausen 8552ac3fea
[MNG-7797] Return BRIEF mode (#1132)
Make BRIEF a legal value again.

---

https://issues.apache.org/jira/browse/MNG-7797
2023-06-01 17:24:31 +02:00
Tamas Cservenak 46807790f6 [MNG-7791] Split validation issues by "locality" aspect (#1122)
Changes:
* introduce "internal" (to project) and "external" aspect
* make "inline" default as it was in 3.9.0 and 3.9.1
* remove "default" report level
* summary and verbose reports "internal only" or ALL issues

Example of outputs while building maven-3.8.x:
https://gist.github.com/cstamas/defd6a52939f5a277bf5fc669c01aedb

---

https://issues.apache.org/jira/browse/MNG-7791
2023-05-26 18:22:12 +02:00
Tamas Cservenak 6f136ef4d2 [MNG-7789] Cleanup
PR had a leftover (unused but injected member). Removed.

---

https://issues.apache.org/jira/browse/MNG-7789
2023-05-24 12:50:23 +02:00
Tamas Cservenak 12ccaacf63 [MNG-7789] Dependency validation rules used wrong data (#1115)
Refactored and now dropped the unused pluginDescriptor/dependencies validation. Now we have "plugin dependency" (using POM) components to perform dependency validation.

Also, two "inlined" validation from plugin dependencies resolver factored out to components, along with 3 existing moved to newly added (they were wrongly validating descriptor dependencies while intent was to validate "real" dependencies) validators.

Ported from
6c562a46ee

---

https://issues.apache.org/jira/browse/MNG-7789
2023-05-24 08:50:28 +02:00
huazhongming 8f19d9ae28
[MNG-7639] Add unit test for DefaultRepositorySystemSessionFactory#newRepositorySession (#1096)
Signed-off-by: crazyhzm <crazyhzm@apache.org>
2023-05-23 10:50:16 +02:00
Tamas Cservenak 3f0f165242 [MNG-7786] Fix plugin validation misleading message
Bugfix post merge: all scopes EXCEPT provided and test...

---

https://issues.apache.org/jira/browse/MNG-7786
2023-05-19 18:08:37 +02:00
Tamas Cservenak 099a3f346c [MNG-7788] Plugin Validation Report logged before summary (#1114)
This change uses different technique to hook into "session end", and thus is invoked before ExecutionEventLogger is.

---

https://issues.apache.org/jira/browse/MNG-7788
2023-05-19 17:49:31 +02:00
Tamas Cservenak 11d97e64e7 [MNG-7787] Introduce new options for plugin validation report (#1113)
Added NONE and INLINE modes.

---

https://issues.apache.org/jira/browse/MNG-7787
2023-05-19 17:49:21 +02:00
Tamas Cservenak a90950155c [MNG-7786] Fix plugin validation misleading message (#1112)
Reword the validation warning and add new check for real plugin dependencies in wrong scopes (do not rely on build-time derived descriptor, but on real data instead).

---

https://issues.apache.org/jira/browse/MNG-7786
2023-05-19 17:49:05 +02:00
Guillaume Nodet d826b575ac
[MNG-7784] Fix compatibility for SuperPomProvider (#1109) 2023-05-17 07:19:19 +02:00
Petr Široký 59342ce249
[MNG-7743] Make the build work on JDK 20 (#1065)
* [MNG-7743] Make the build work on JDK 20

 * the behaviour before the fix was already pretty confusing. JDK 19 and
   older do not check the presense of '{' in the constructor, so the
   URL object got created, but when converting to file the result would
   be e.g. '/../../src/test/remote-repo' which is completely wrong.
   But it seems the affected tests did not really care, as all of them
   were passing

* Remove forgotten println

Co-authored-by: Yeikel <email@yeikel.com>

* Test with latest JDK

* Do not run ITs with jdk 20, but just the "build itself"

---------

Co-authored-by: Yeikel <email@yeikel.com>
Co-authored-by: Guillaume Nodet <gnodet@gmail.com>
2023-05-16 11:06:05 +02:00
Guillaume Nodet b76e78072a
[MNG-7785] Clean usage of SessionData (#1094) 2023-05-16 10:56:44 +02:00
Tim te Beek a8319821a9
[MNG-6829] Replace any StringUtils#isEmpty(String) and #isNotEmpty(String) (#1104)
* [MNG-6829] Replace any StringUtils#isEmpty(String) and #isNotEmpty(String)

Use this link to re-run the recipe: https://public.moderne.io/recipes/org.openrewrite.java.migrate.apache.commons.lang.IsNotEmptyToJdk?organizationId=QXBhY2hlIE1hdmVu

Co-authored-by: Moderne <team@moderne.io>

* Apply Spotless

---------

Co-authored-by: Moderne <team@moderne.io>
2023-05-09 19:46:02 -04:00
Tamas Cservenak 8b8f2c3ddd [MNG-7767] Tone down plugin validator (#1092)
This change reduces default output making it more compact, and also renames the "levels" to brief, default and verbose.

---

https://issues.apache.org/jira/browse/MNG-7767
2023-04-26 15:53:21 +02:00
Giovanni van der Schelde 81231b8865 [MNG-7707] Skip consumer pom artifact transformation when no pom is available (fixes #1060) 2023-04-21 21:27:03 +02:00
Guillaume Nodet 2db7c85b64
[MNG-7038] Introduce public properties to point to the root and top directories of (multi-module) project (#1061)
This commit introduces three properties:

 * project.rootDirectory: the project's directory or parent directory containing a .mvn subdirectory or a pom.xml flagged with the root="true" attribute. If no such directory can be found, accessing the rootDirectory property will throw an IllegalStateException.

 * session.topDirectory : the directory of the topmost project being built, usually the current directory or the directory pointed at by the -f/--file command line argument. The topDirectory is similar to the executionRootDirectory property available on the session, but renamed to make it coherent with the new rootDirectory and to avoid using root in its name. The topDirectory property is computed by the CLI as the directory pointed at by the -f/--file command line argument, or the current directory if there's no such argument.

 * session.rootDirectory : the rootDirectory for the topDirectory project.

The topDirectory and rootDirectory properties are made available on the MavenSession / Session and deprecate the executionRootDirectory and multiModuleProjectDirectory properties. The rootDirectory should never change for a given project and is thus made available for profile activation and model interpolation (without the project. prefix, similar to basedir). The goal is also to make the rootDirectory property also available during command line arguments interpolation.

A root boolean attribute is also added to the model to indicate that the project is the root project. This attribute is only supported if the buildconsumer feature is active and removed before the pom is installed or deployed. It can be used as an alternative mechanism to the .mvn directory.
2023-04-20 12:58:12 +02:00
Guillaume Nodet 9e51a8fe95
[MNG-7763] Provide UTF-8 as a default value for project.build.sourceEncoding and project.reporting.outputEncoding (#1085) 2023-04-17 15:20:54 +02:00
Karl Heinz Marbaise 5c750eacb4
[MNG-7766] - Migrate to use mockito-bom 4.11.0 2023-04-16 14:54:16 +02:00
Karl Heinz Marbaise c49c4e0b18
[MNG-7451] - Remove public modifier from test methods / test classes 2023-04-15 19:24:20 +02:00
Tamas Cservenak 432bd7af3a [MNG-7741] Track missing files, plugin and parent pom dependencies (#1058)
Add more information when using `-Dmaven.repo.local.recordReverseTree=true`.

Signed-off-by: Grzegorz Grzybek <gr.grzybek@gmail.com>

---

https://issues.apache.org/jira/browse/MNG-7741
2023-04-12 13:08:37 +02:00
Niels Basjes 328ea1be31
[MNG-7750] Ensure no unwanted interpolation in plugins from profiles. (#1076)
This is the port of https://github.com/apache/maven/pull/1075 to the master branch.

The good thing is that this is ONLY the tests because the maven 4 does not have the problem of MNG-7750.

A few small changes in the tests were needed to handle the internal differences between maven 3.x and maven 4.x.

---

https://issues.apache.org/jira/browse/MNG-7750
2023-04-12 12:26:40 +02:00
Tamas Cservenak 53b6473237 [MNG-7754] Improvement and extension of plugin validation (#1079)
This is general rework of current Maven 3.9.x line how it handles plugin and mojo validations.

Changes:
* added plugin validations for dependencies
* introduced pluginValidationManager that gathers violations
* manager creates a report at build end, with dense and non repeating data
* this is in spirit to lessen already too verbose logging, as current solution would report violations as many times plugin is used in reactor, and that can be many (ie. a plugin from parent for each module)

Example report of Maven 3.9.x build: https://gist.github.com/cstamas/b62fdcd53eaf316123cf183f5a24e6a5

---

https://issues.apache.org/jira/browse/MNG-7754
2023-04-12 11:55:40 +02:00
Guillaume Nodet b2ee29e03e [MNG-6825] Get rid of commons-lang 2023-04-06 10:51:18 +02:00
Tim te Beek 8421a36592
[MNG-6825] Replace StringUtils (#1078)
Co-authored-by: Moderne <team@moderne.io>
2023-04-01 01:56:03 +00:00
Elliotte Rusty Harold 54afd174ef
remove unused branches in fake (#1069)
* remove unused branches in a fake object
2023-03-23 10:36:23 +00:00
Guillaume Nodet ae933fe68d
[MNG-7720] Simplify code (#1063) 2023-03-23 06:31:49 +01:00
Elliotte Rusty Harold cadeab53f6
MNG-7738 don't dump raw stack traces to System.err (#1064) 2023-03-22 12:44:37 +00:00
Tim te Beek 703f814e34
[MNG-6825] Replace FileUtils with Commons IO (#1067)
* [MNG-6825] Replace FileUtils with Commons IO

Co-authored-by: Moderne <team@moderne.io>

* Minor fixes and reverts where cases are not handled yet

* Drop explicit dependencies on plexus-utils

---------

Co-authored-by: Moderne <team@moderne.io>
2023-03-19 20:19:22 +00:00
Guillaume Nodet 8052c720e7 [maven-release-plugin] prepare for next development iteration 2023-03-15 17:06:58 +01:00
Guillaume Nodet 26d10a4bf9 [maven-release-plugin] prepare release maven-4.0.0-alpha-5 2023-03-15 17:06:43 +01:00
Slawomir Jaranowski e9e0a51738 [MNG-7725] Update surefire to 3.0.0 in default binding 2023-03-14 16:42:10 +01:00
Guillaume Nodet 10128b4484
Remove references to Xpp3DomBuilder and use XmlNodeBuilder instead (#1045) 2023-03-09 16:26:58 +01:00
Hervé Boutemy ea21d6f6fc [MNG-7666] update documentation 2023-03-08 18:45:23 +01:00
Tamas Cservenak 1ffd68b802
[MNG-7720] Wrong build order of forked projects (#1040)
The original fix MNG-7672 matched the "scope" but missed the "order". `project.collectedProjects` are in order as loaded (POM order), is not topologically sorted.

Fix is to use DAG of projects, ask for downstream projects (will return more then we need but sorted) and narrow that list to only contain collected projects.

---

https://issues.apache.org/jira/browse/MNG-7720
2023-03-08 09:04:35 +01:00