You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2019/12/30 14:23:36 UTC

[maven] branch MNG-6656 updated (21be0b1 -> 3d453bf)

This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a change to branch MNG-6656
in repository https://gitbox.apache.org/repos/asf/maven.git.


    from 21be0b1  [MNG-6656] Don't post-process when model has errors
     add 6f5f1f1  updated GitHub repository description
     add 56d4ea5  added link to documentation
     add 00654c2  [MNG-6810] - Remove profiles in maven-model
     add 0022733  Added .asf.yaml to be ignored by apache-rat-plguin.
     add b810f59  [MNG-6811] - Remove unnecessary filtering configuration
     add f7ca74d  [MNG-6812] - Remove unused files from maven-embedder
     add 2c8f927  Added label apache-maven
     add 25ced83  [MNG-6813] - Remove Maven 1 leftover
     add 610e623  [MNG-6814] - Remove useless exclusion in maven-plugin-api
     add 13c80d5  [MNG-6815] - Upgrade guice 4.2.2
     add 7284bd6  Updated README.md
     add 5750857  [MNG-6817] - Upgrade mockito to 3.2.0
     add 11664b6  [MNG-6818] - Upgrade plexus-utils 3.3.0
     add 3332f4d  [MNG-6816] Prefer System.lineSeparator() over system properties
     new ee8e8e2  Merge remote-tracking branch 'remotes/origin/master' into MNG-6656
     new d373d3a  MNG-6656: Keep xml version + encoding after transformation
     new d9cc0e4  [MNG-6656] Improve ModelValidator
     add 99953a4  [MNG-6820] - Remove unnecessary dependency exclusions for commons-cli
     add e7654f6  [MNG-6821] - Remove unnecessary dependency exclusions for plexus-component-annotations
     add b8f066e  [MNG-6823] - Remove unnecessary dependency exclusions for wagon-http
     add 06842d6  [MNG-6826] - Remove condition check for JDK8+ in FileSizeFormatTest  - The conditions to check for JDK8+ in test cases is    obsolete with the lift to JDK8.
     add 78ad10d  [MNG-6807] - Remove LifecycleXpp3ReaderTest
     add 370570b  Fixed display text for Apache License.
     add aad48b7  Removed duplication of License part.
     add 11b8b2d  [MNG-6824] ModelMerger is broken Fix modules Apply Java 8 Functions
     new 9049d68  Merge branch 'master' into MNG-6656
     add 1ad7801  [MNG-6827] Replace deprecated StringUtils#defaultString() from Plexus Utils
     add e3aa406  [MNG-6824] ModelMerger is broken Fixing reportSet.reports, mailingList.otherArchives, contributor.roles, build.filters, execution.goals, patternSet.includes, patternSet.excludes
     new 630c22f  Merge branch 'master' into MNG-6656
     new 3d453bf  [MNG-6656] Introduce custom ModelMerger to keep inputLocationTracker from fileModel in rawModel

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .asf.yaml                                          |   9 +
 README.md                                          |  10 +-
 .../AbstractArtifactResolutionException.java       |   2 +-
 .../project/validation/ModelValidationResult.java  |   6 +-
 .../resolver/ArtifactResolutionExceptionTest.java  |   2 +-
 .../maven/artifact/testutils/TestFileManager.java  |   3 +-
 .../DefaultRepositorySystemSessionFactory.java     |  82 +++-
 .../plugin/DefaultLifecycleBindingsInjector.java   |   6 +-
 .../DefaultPluginDependenciesResolver.java         |  11 +-
 .../DefaultProjectDependenciesResolver.java        |  11 +-
 .../PluginParameterExpressionEvaluatorTest.java    |   2 +-
 .../apache/maven/project/ProjectBuilderTest.java   |   2 +
 .../building/DefaultToolchainsBuilderTest.java     |   2 +-
 .../building/ToolchainsBuildingExceptionTest.java  |   2 +-
 maven-embedder/pom.xml                             |  88 ++---
 .../org/apache/maven/cli/CLIReportingUtils.java    |   2 +-
 .../impl/UnsupportedSlf4jBindingConfiguration.java |   2 +-
 .../src/test/embedder-test-project/pom.xml         |  48 ---
 .../src/main/java/org/apache/maven/App.java        |  13 -
 .../src/test/java/org/apache/maven/AppTest.java    |  38 --
 .../aggregate-mojo-failure/plugin/pom.xml          |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  36 --
 .../aggregate-mojo-failure/project/pom.xml         |  25 --
 .../bad-build-plan/plugin/pom.xml                  |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  35 --
 .../bad-build-plan/project/pom.xml                 |  25 --
 .../bad-dep-version/pom.xml                        |  33 --
 .../test-maven-ext/1/test-maven-ext-1.pom          |  34 --
 .../bad-ext-direct-deps/project/pom.xml            |  35 --
 .../1/bad-ext-plugin-dep-ver-maven-plugin-1.jar    | Bin 3166 -> 0 bytes
 .../1/bad-ext-plugin-dep-ver-maven-plugin-1.pom    |  55 ---
 .../bad-ext-plugin-dep-ver/plugin/pom.xml          |  57 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  33 --
 .../bad-ext-plugin-dep-ver/project/pom.xml         |  37 --
 .../1/bad-ext-plugin-maven-ver-maven-plugin-1.jar  | Bin 3166 -> 0 bytes
 .../1/bad-ext-plugin-maven-ver-maven-plugin-1.pom  |  54 ---
 .../maven-metadata-local.xml                       |  12 -
 .../bad-ext-plugin-maven-ver/plugin/pom.xml        |  57 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  33 --
 .../bad-ext-plugin-maven-ver/project/pom.xml       |  37 --
 .../bad-maven-version/pom.xml                      |  11 -
 .../bad-mg-dep-version/pom.xml                     |  35 --
 .../bad-non-dep-version/pom.xml                    |  35 --
 .../bad-profile-repo/pom.xml                       |   7 -
 .../bad-profile-repo/profiles.xml                  |  18 -
 .../config-rdonly-mojo-param/plugin/pom.xml        |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  39 --
 .../config-rdonly-mojo-param/project/pom.xml       |  47 ---
 .../deploy-repo-creation-err/pom.xml               |  41 --
 .../duplicated-attachments/plugin/pom.xml          |  54 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  50 ---
 .../duplicated-attachments/project/pom.xml         |  25 --
 .../1/err-loading-plugin-maven-plugin-1.jar        | Bin 3166 -> 0 bytes
 .../1/err-loading-plugin-maven-plugin-1.pom        |  55 ---
 .../err-loading-plugin/project/pom.xml             |  45 ---
 .../org/apache/maven/errortest/dep/1/dep-1.pom     |  16 -
 .../1/err-resolving-ext-plugin-maven-plugin-1.jar  | Bin 3166 -> 0 bytes
 .../1/err-resolving-ext-plugin-maven-plugin-1.pom  |  60 ---
 .../err-resolving-ext-plugin/project/pom.xml       |  18 -
 .../org/apache/maven/errortest/dep/1/dep-1.pom     |  16 -
 .../err-resolving-project-dep/project/pom.xml      |  27 --
 .../apache/maven/test/error/mojoFailure/App.java   |  13 -
 .../maven/test/error/mojoFailure/AppTest.java      |  38 --
 .../test-maven-ext-dep/1/test-maven-ext-dep-1.pom  |  26 --
 .../test-maven-ext/1/test-maven-ext-1.pom          |  34 --
 .../ext-deps-resolve-err/project/pom.xml           |  35 --
 .../ext-plugin-artifact-missing-maven-plugin-1.pom |  55 ---
 .../ext-plugin-artifact-missing/project/pom.xml    |  37 --
 .../ext-plugin-realm-error/plugin/pom.xml          |  49 ---
 .../src/main/java/org/plugin/ComponentOne.java     |   8 -
 .../src/main/java/org/plugin/ComponentTwo.java     |   8 -
 .../src/main/java/org/plugin/TestPlugin.java       |  39 --
 .../main/resources/META-INF/plexus/components.xml  |  25 --
 .../ext-plugin-realm-error/project/pom.xml         |  36 --
 .../1/ext-plugin-version-err-maven-plugin-1.jar    | Bin 3166 -> 0 bytes
 .../1/ext-plugin-version-err-maven-plugin-1.pom    |  50 ---
 .../maven-metadata-local.xml                       |  10 -
 .../ext-plugin-version-err/plugin/pom.xml          |  57 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  33 --
 .../ext-plugin-version-err/project/pom.xml         |  36 --
 .../ext-realm-error/ext/pom.xml                    |  38 --
 .../ext/src/main/java/org/ext/App.java             |  13 -
 .../main/resources/META-INF/plexus/components.xml  |   1 -
 .../ext-realm-error/project/pom.xml                |  35 --
 .../interp-from-model/pom.xml                      |   7 -
 .../local-repo/org/test/bad-pom/1/bad-pom-1.pom    |   9 -
 .../interp-from-project/project/pom.xml            |  22 --
 .../load-extern-profiles-ioex/pom.xml              |   7 -
 .../load-extern-profiles-xex/pom.xml               |   7 -
 .../load-extern-profiles-xex/profiles.xml          |   4 -
 .../missing-direct-invoke-mojo/plugin/pom.xml      |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  36 --
 .../missing-module-pom/child1/pom.xml              |  19 -
 .../child1/src/main/java/org/test/App.java         |  13 -
 .../child1/src/test/java/org/test/AppTest.java     |  38 --
 .../missing-module-pom/pom.xml                     |  13 -
 .../missing-parent-pom/pom.xml                     |  11 -
 .../missing-req-mojo-param/plugin/pom.xml          |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  38 --
 .../missing-req-mojo-param/project/pom.xml         |  25 --
 .../mojo-config-error/plugin/pom.xml               |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  33 --
 .../src/main/resources/META-INF/maven/plugin.xml   |  38 --
 .../mojo-config-error/project/pom.xml              |  45 ---
 .../mojo-exec-err/plugin/pom.xml                   |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  33 --
 .../mojo-exec-err/project/pom.xml                  |  26 --
 .../mojo-lookup-err/plugin/pom.xml                 |  54 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  42 --
 .../mojo-lookup-err/project/pom.xml                |  25 --
 .../parent-parse-ioex/child/pom.xml                |  10 -
 .../parent-parse-ioex/pom.xml                      |   0
 .../parent-parse-xex/child/pom.xml                 |  10 -
 .../parent-parse-xex/pom.xml                       |   7 -
 .../profile-activator-err/pom.xml                  |  39 --
 .../profile-activator-lookup-err/ext/pom.xml       |  38 --
 .../ext/src/main/java/org/ext/App.java             |  13 -
 .../main/resources/META-INF/plexus/components.xml  |  16 -
 .../profile-activator-lookup-err/project/pom.xml   |  46 ---
 .../project-collision/mod1/pom.xml                 |   7 -
 .../project-collision/mod2/pom.xml                 |   7 -
 .../project-collision/pom.xml                      |  12 -
 .../project-cycle/dep/pom.xml                      |  12 -
 .../error-reporting-projects/project-cycle/pom.xml |  19 -
 .../project-dep-missing/pom.xml                    |  22 --
 .../apache/maven/test/error/mojoFailure/App.java   |  13 -
 .../maven/test/error/mojoFailure/AppTest.java      |  38 --
 .../project-mojo-failure/pom.xml                   |  17 -
 .../apache/maven/test/error/mojoFailure/App.java   |  14 -
 .../maven/test/error/mojoFailure/AppTest.java      |  38 --
 .../project-parse-xex/pom.xml                      |  25 --
 .../project-validation/pom.xml                     |  13 -
 .../repo-creation-err/pom.xml                      |  41 --
 .../test/eventing-projects/read-with-deps/pom.xml  |  15 -
 .../read-with-deps/repo/tests/dep/1/dep-1.pom      |   6 -
 .../eventing-projects/simple-read-project/pom.xml  |   6 -
 .../test/extensions/META-INF/plexus/components.xml |  28 --
 .../maven/cli/CLIManagerDocumentationTest.java     |   2 +-
 .../maven/cli/transfer/FileSizeFormatTest.java     |  21 +-
 .../src/test/plugin-version-references/jar-pom.xml |  32 --
 .../plugin-version-references/maven-plugin-pom.xml |  36 --
 .../bad-module-non-recursive/badmodule/pom.xml     |  14 -
 .../bad-module-non-recursive/goodmodule/pom.xml    |  14 -
 .../test/projects/bad-module-non-recursive/pom.xml |  14 -
 .../src/test/projects/invalid-goal/pom.xml         |  49 ---
 .../project/pom.xml                                |  13 -
 .../src/main/java/org/codehaus/m2eclipse/App.java  |  13 -
 .../test/java/org/codehaus/m2eclipse/AppTest.java  |  38 --
 .../parent/1.0-SNAPSHOT/maven-metadata-company.xml |  11 -
 .../parent/1.0-SNAPSHOT/parent-1.0-SNAPSHOT.pom    |  18 -
 .../m2eclipse/parent/maven-metadata-local.xml      |  11 -
 .../settings.xml                                   |  23 --
 .../src/test/projects/optional-dep/pom.xml         |  20 -
 .../readProject-missingModuleIgnored/pom.xml       |  13 -
 .../modules/child1/pom.xml                         |  13 -
 .../readProject-withScmInheritance/pom.xml         |  19 -
 .../org.apache.maven/maven-core/pom.properties     |  18 -
 .../resources/pom-with-distribution-status.xml     |  30 --
 .../test/resources/pom-without-dependencies.xml    |  30 --
 maven-embedder/src/test/resources/pom.xml          |  34 --
 maven-embedder/src/test/resources/pom2.xml         |  48 ---
 .../test/resources/settings/invalid-settings.xml   |  24 --
 .../src/test/resources/settings/valid-settings.xml |  27 --
 .../maven/model/building/DefaultModelBuilder.java  | 196 +++++++++-
 .../model/building/DefaultModelBuilderFactory.java |   1 +
 .../building/DefaultModelBuildingRequest.java      |  14 +
 .../model/building/FilterModelBuildingRequest.java |  13 +
 .../maven/model/building/ModelBuildingRequest.java |  15 +
 .../inheritance/DefaultInheritanceAssembler.java   |   8 +-
 .../DefaultDependencyManagementInjector.java       |   4 +-
 .../DefaultPluginManagementInjector.java           |   8 +-
 .../apache/maven/model/merge/MavenModelMerger.java |  48 +--
 .../model/profile/DefaultProfileInjector.java      |  16 +-
 .../model/validation/DefaultModelValidator.java    |  51 +--
 .../maven/model/validation/ModelValidator.java     |  16 +-
 maven-model-builder/src/main/mdo/profiles.mdo      | 399 -------------------
 .../model/building/FileToRawModelMergerTest.java   |  82 ++++
 .../validation/DefaultModelValidatorTest.java      |  33 +-
 maven-model/pom.xml                                |  58 +--
 .../org/apache/maven/model/merge/ModelMerger.java  | 408 +++++--------------
 .../apache/maven/model/merge/ModelMergerTest.java  | 430 +++++++++++++++++++++
 maven-plugin-api/pom.xml                           |   6 -
 .../plugin/lifecycle/LifecycleXpp3ReaderTest.java  |  55 ---
 maven-plugin-api/src/test/resources/lifecycle.xml  |  39 --
 pom.xml                                            |  33 +-
 185 files changed, 1107 insertions(+), 5025 deletions(-)
 create mode 100644 .asf.yaml
 delete mode 100644 maven-embedder/src/test/embedder-test-project/pom.xml
 delete mode 100644 maven-embedder/src/test/embedder-test-project/src/main/java/org/apache/maven/App.java
 delete mode 100644 maven-embedder/src/test/embedder-test-project/src/test/java/org/apache/maven/AppTest.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/aggregate-mojo-failure/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/aggregate-mojo-failure/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/aggregate-mojo-failure/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-build-plan/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-build-plan/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-build-plan/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-dep-version/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-direct-deps/local-repo/org/apache/maven/errortest/test-maven-ext/1/test-maven-ext-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-direct-deps/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-dep-ver/local-repo/org/apache/maven/errortest/bad-ext-plugin-dep-ver-maven-plugin/1/bad-ext-plugin-dep-ver-maven-plugin-1.jar
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-dep-ver/local-repo/org/apache/maven/errortest/bad-ext-plugin-dep-ver-maven-plugin/1/bad-ext-plugin-dep-ver-maven-plugin-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-dep-ver/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-dep-ver/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-dep-ver/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-maven-ver/local-repo/org/apache/maven/errortest/bad-ext-plugin-maven-ver-maven-plugin/1/bad-ext-plugin-maven-ver-maven-plugin-1.jar
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-maven-ver/local-repo/org/apache/maven/errortest/bad-ext-plugin-maven-ver-maven-plugin/1/bad-ext-plugin-maven-ver-maven-plugin-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-maven-ver/local-repo/org/apache/maven/errortest/bad-ext-plugin-maven-ver-maven-plugin/maven-metadata-local.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-maven-ver/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-maven-ver/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-ext-plugin-maven-ver/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-maven-version/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-mg-dep-version/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-non-dep-version/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-profile-repo/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/bad-profile-repo/profiles.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/config-rdonly-mojo-param/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/config-rdonly-mojo-param/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/config-rdonly-mojo-param/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/deploy-repo-creation-err/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/duplicated-attachments/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/duplicated-attachments/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/duplicated-attachments/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-loading-plugin/local-repo/org/apache/maven/errortest/err-loading-plugin-maven-plugin/1/err-loading-plugin-maven-plugin-1.jar
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-loading-plugin/local-repo/org/apache/maven/errortest/err-loading-plugin-maven-plugin/1/err-loading-plugin-maven-plugin-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-loading-plugin/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-resolving-ext-plugin/local-repo/org/apache/maven/errortest/dep/1/dep-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-resolving-ext-plugin/local-repo/org/apache/maven/errortest/err-resolving-ext-plugin-maven-plugin/1/err-resolving-ext-plugin-maven-plugin-1.jar
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-resolving-ext-plugin/local-repo/org/apache/maven/errortest/err-resolving-ext-plugin-maven-plugin/1/err-resolving-ext-plugin-maven-plugin-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-resolving-ext-plugin/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-resolving-project-dep/project/local-repo/org/apache/maven/errortest/dep/1/dep-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-resolving-project-dep/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-resolving-project-dep/project/src/main/java/org/apache/maven/test/error/mojoFailure/App.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/err-resolving-project-dep/project/src/test/java/org/apache/maven/test/error/mojoFailure/AppTest.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-deps-resolve-err/local-repo/org/apache/maven/errortest/test-maven-ext-dep/1/test-maven-ext-dep-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-deps-resolve-err/local-repo/org/apache/maven/errortest/test-maven-ext/1/test-maven-ext-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-deps-resolve-err/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-artifact-missing/local-repo/org/apache/maven/errortest/ext-plugin-artifact-missing-maven-plugin/1/ext-plugin-artifact-missing-maven-plugin-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-artifact-missing/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-realm-error/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-realm-error/plugin/src/main/java/org/plugin/ComponentOne.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-realm-error/plugin/src/main/java/org/plugin/ComponentTwo.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-realm-error/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-realm-error/plugin/src/main/resources/META-INF/plexus/components.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-realm-error/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-version-err/local-repo/org/apache/maven/errortest/ext-plugin-version-err-maven-plugin/1/ext-plugin-version-err-maven-plugin-1.jar
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-version-err/local-repo/org/apache/maven/errortest/ext-plugin-version-err-maven-plugin/1/ext-plugin-version-err-maven-plugin-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-version-err/local-repo/org/apache/maven/errortest/ext-plugin-version-err-maven-plugin/maven-metadata-local.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-version-err/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-version-err/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-plugin-version-err/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-realm-error/ext/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-realm-error/ext/src/main/java/org/ext/App.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-realm-error/ext/src/main/resources/META-INF/plexus/components.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/ext-realm-error/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/interp-from-model/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/interp-from-project/project/local-repo/org/test/bad-pom/1/bad-pom-1.pom
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/interp-from-project/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/load-extern-profiles-ioex/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/load-extern-profiles-xex/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/load-extern-profiles-xex/profiles.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/missing-direct-invoke-mojo/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/missing-direct-invoke-mojo/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/missing-module-pom/child1/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/missing-module-pom/child1/src/main/java/org/test/App.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/missing-module-pom/child1/src/test/java/org/test/AppTest.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/missing-module-pom/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/missing-parent-pom/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/missing-req-mojo-param/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/missing-req-mojo-param/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/missing-req-mojo-param/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/mojo-config-error/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/mojo-config-error/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/mojo-config-error/plugin/src/main/resources/META-INF/maven/plugin.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/mojo-config-error/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/mojo-exec-err/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/mojo-exec-err/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/mojo-exec-err/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/mojo-lookup-err/plugin/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/mojo-lookup-err/plugin/src/main/java/org/plugin/TestPlugin.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/mojo-lookup-err/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/parent-parse-ioex/child/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/parent-parse-ioex/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/parent-parse-xex/child/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/parent-parse-xex/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/profile-activator-err/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/profile-activator-lookup-err/ext/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/profile-activator-lookup-err/ext/src/main/java/org/ext/App.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/profile-activator-lookup-err/ext/src/main/resources/META-INF/plexus/components.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/profile-activator-lookup-err/project/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-collision/mod1/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-collision/mod2/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-collision/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-cycle/dep/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-cycle/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-dep-missing/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-dep-missing/src/main/java/org/apache/maven/test/error/mojoFailure/App.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-dep-missing/src/test/java/org/apache/maven/test/error/mojoFailure/AppTest.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-mojo-failure/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-mojo-failure/src/main/java/org/apache/maven/test/error/mojoFailure/App.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-mojo-failure/src/test/java/org/apache/maven/test/error/mojoFailure/AppTest.java
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-parse-xex/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/project-validation/pom.xml
 delete mode 100644 maven-embedder/src/test/error-reporting-projects/repo-creation-err/pom.xml
 delete mode 100644 maven-embedder/src/test/eventing-projects/read-with-deps/pom.xml
 delete mode 100644 maven-embedder/src/test/eventing-projects/read-with-deps/repo/tests/dep/1/dep-1.pom
 delete mode 100644 maven-embedder/src/test/eventing-projects/simple-read-project/pom.xml
 delete mode 100644 maven-embedder/src/test/extensions/META-INF/plexus/components.xml
 delete mode 100644 maven-embedder/src/test/plugin-version-references/jar-pom.xml
 delete mode 100644 maven-embedder/src/test/plugin-version-references/maven-plugin-pom.xml
 delete mode 100644 maven-embedder/src/test/projects/bad-module-non-recursive/badmodule/pom.xml
 delete mode 100644 maven-embedder/src/test/projects/bad-module-non-recursive/goodmodule/pom.xml
 delete mode 100644 maven-embedder/src/test/projects/bad-module-non-recursive/pom.xml
 delete mode 100644 maven-embedder/src/test/projects/invalid-goal/pom.xml
 delete mode 100644 maven-embedder/src/test/projects/isolated-project-getting-parent-pom/project/pom.xml
 delete mode 100644 maven-embedder/src/test/projects/isolated-project-getting-parent-pom/project/src/main/java/org/codehaus/m2eclipse/App.java
 delete mode 100644 maven-embedder/src/test/projects/isolated-project-getting-parent-pom/project/src/test/java/org/codehaus/m2eclipse/AppTest.java
 delete mode 100644 maven-embedder/src/test/projects/isolated-project-getting-parent-pom/repository/org/codehaus/m2eclipse/parent/1.0-SNAPSHOT/maven-metadata-company.xml
 delete mode 100644 maven-embedder/src/test/projects/isolated-project-getting-parent-pom/repository/org/codehaus/m2eclipse/parent/1.0-SNAPSHOT/parent-1.0-SNAPSHOT.pom
 delete mode 100644 maven-embedder/src/test/projects/isolated-project-getting-parent-pom/repository/org/codehaus/m2eclipse/parent/maven-metadata-local.xml
 delete mode 100644 maven-embedder/src/test/projects/isolated-project-getting-parent-pom/settings.xml
 delete mode 100644 maven-embedder/src/test/projects/optional-dep/pom.xml
 delete mode 100644 maven-embedder/src/test/projects/readProject-missingModuleIgnored/pom.xml
 delete mode 100644 maven-embedder/src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml
 delete mode 100644 maven-embedder/src/test/projects/readProject-withScmInheritance/pom.xml
 delete mode 100644 maven-embedder/src/test/resources/META-INF/maven/org.apache.maven/maven-core/pom.properties
 delete mode 100644 maven-embedder/src/test/resources/pom-with-distribution-status.xml
 delete mode 100644 maven-embedder/src/test/resources/pom-without-dependencies.xml
 delete mode 100644 maven-embedder/src/test/resources/pom.xml
 delete mode 100644 maven-embedder/src/test/resources/pom2.xml
 delete mode 100644 maven-embedder/src/test/resources/settings/invalid-settings.xml
 delete mode 100644 maven-embedder/src/test/resources/settings/valid-settings.xml
 delete mode 100644 maven-model-builder/src/main/mdo/profiles.mdo
 create mode 100644 maven-model-builder/src/test/java/org/apache/maven/model/building/FileToRawModelMergerTest.java
 create mode 100644 maven-model/src/test/java/org/apache/maven/model/merge/ModelMergerTest.java
 delete mode 100644 maven-plugin-api/src/test/java/org/apache/maven/plugin/lifecycle/LifecycleXpp3ReaderTest.java
 delete mode 100644 maven-plugin-api/src/test/resources/lifecycle.xml


[maven] 02/06: MNG-6656: Keep xml version + encoding after transformation

Posted by rf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MNG-6656
in repository https://gitbox.apache.org/repos/asf/maven.git

commit d373d3a3d4419c0e15a8c37f28a92f3920fc61f6
Author: rfscholte <rf...@apache.org>
AuthorDate: Fri Dec 13 15:10:01 2019 +0100

    MNG-6656: Keep xml version + encoding after transformation
---
 .../DefaultRepositorySystemSessionFactory.java     | 82 +++++++++++++++++++---
 1 file changed, 73 insertions(+), 9 deletions(-)

diff --git a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
index 526ed01..77581d6 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
@@ -20,7 +20,8 @@ package org.apache.maven.internal.aether;
  */
 
 import java.io.File;
-import java.io.FileReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PipedInputStream;
@@ -38,10 +39,18 @@ import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Provider;
 import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXResult;
 import javax.xml.transform.sax.SAXSource;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.sax.TransformerHandler;
 import javax.xml.transform.stream.StreamResult;
 
 import org.apache.maven.RepositoryUtils;
@@ -59,6 +68,7 @@ import org.apache.maven.settings.crypto.DefaultSettingsDecryptionRequest;
 import org.apache.maven.settings.crypto.SettingsDecrypter;
 import org.apache.maven.settings.crypto.SettingsDecryptionResult;
 import org.apache.maven.xml.Factories;
+import org.apache.maven.xml.sax.filter.AbstractSAXFilter;
 import org.apache.maven.xml.sax.filter.ConsumerPomXMLFilterFactory;
 import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
 import org.codehaus.plexus.logging.Logger;
@@ -285,8 +295,9 @@ public class DefaultRepositorySystemSessionFactory
                 Collection<FileTransformer> transformers = new ArrayList<>();
                 if ( "pom".equals( artifact.getExtension() ) )
                 {
-                    final TransformerFactory transformerFactory = Factories.newTransformerFactory();
-
+                    final SAXTransformerFactory transformerFactory =
+                        (SAXTransformerFactory) Factories.newTransformerFactory();
+                    
                     transformers.add( new FileTransformer()
                     {
                         @Override
@@ -296,26 +307,33 @@ public class DefaultRepositorySystemSessionFactory
                             final PipedOutputStream pipedOutputStream  = new PipedOutputStream();
                             final PipedInputStream pipedInputStream  = new PipedInputStream( pipedOutputStream );
                             
+                            final TransformerHandler transformerHandler =
+                                getTransformerHandler( transformerFactory, file );
+                            
                             final SAXSource transformSource;
                             try
                             {
+                                AbstractSAXFilter filter = consumerPomXMLFilterFactory.get().get( file.toPath() );
+                                filter.setLexicalHandler( transformerHandler );
+                                
                                 transformSource =
-                                    new SAXSource( consumerPomXMLFilterFactory.get().get( file.toPath() ),
-                                                   new InputSource( new FileReader( file ) ) );
+                                    new SAXSource( filter, new InputSource( new FileInputStream( file ) ) );
                             }
                             catch ( SAXException | ParserConfigurationException | TransformerConfigurationException e )
                             {   
                                 throw new TransformException( "Failed to create a consumerPomXMLFilter", e );
                             }
                             
-                            final StreamResult result = new StreamResult( pipedOutputStream );
+                            transformerHandler.setResult( new StreamResult( pipedOutputStream ) );
+                            
+                            SAXResult transformResult = new SAXResult( transformerHandler );
                             
                             ExecutorService executorService = Executors.newSingleThreadExecutor();
                             executorService.execute( () -> 
                             {
                                 try ( PipedOutputStream out = pipedOutputStream )
                                 {
-                                    transformerFactory.newTransformer().transform( transformSource, result );
+                                    transformerFactory.newTransformer().transform( transformSource, transformResult );
                                 }
                                 catch ( TransformerException | IOException e )
                                 {
@@ -325,7 +343,7 @@ public class DefaultRepositorySystemSessionFactory
 
                             return pipedInputStream;
                         }
-
+                        
                         @Override
                         public Artifact transformArtifact( Artifact artifact )
                         {
@@ -338,6 +356,52 @@ public class DefaultRepositorySystemSessionFactory
         };
     }
     
+    private static TransformerHandler getTransformerHandler( SAXTransformerFactory transformerFactory,
+                                                      File file )
+        throws IOException, FileNotFoundException, TransformException
+    {
+        final TransformerHandler transformerHandler;
+        
+        // Keep same encoding+version
+        try ( FileInputStream input = new FileInputStream( file ) )
+        {
+            XMLStreamReader streamReader =
+                XMLInputFactory.newFactory().createXMLStreamReader( input );
+
+            transformerHandler = transformerFactory.newTransformerHandler();
+
+            final String encoding = streamReader.getCharacterEncodingScheme();
+            final String version = streamReader.getVersion();
+            
+            Transformer transformer = transformerHandler.getTransformer();
+            if ( encoding == null && version == null )
+            {
+                transformer.setOutputProperty( OutputKeys.OMIT_XML_DECLARATION, "yes" );
+            }
+            else
+            {
+                transformer.setOutputProperty( OutputKeys.OMIT_XML_DECLARATION, "no" );
+
+                if ( encoding != null )
+                {
+                    transformer.setOutputProperty( OutputKeys.ENCODING, encoding );
+                }
+                if ( version != null )
+                {
+                    transformer.setOutputProperty( OutputKeys.VERSION, version );
+                }
+            }
+        }
+        catch ( XMLStreamException 
+                        | FactoryConfigurationError
+                        | TransformerConfigurationException e )
+        {
+            throw new TransformException( "Failed to detect XML encoding and version", e );
+        }
+        return transformerHandler;
+    }
+
+    
     private String getUserAgent()
     {
         return "Apache-Maven/" + getMavenVersion() + " (Java " + System.getProperty( "java.version" ) + "; "


[maven] 04/06: Merge branch 'master' into MNG-6656

Posted by rf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MNG-6656
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 9049d68bba18a69036ac8328a1e8bb11714e3af2
Merge: d9cc0e4 11b8b2d
Author: rfscholte <rf...@apache.org>
AuthorDate: Sat Dec 21 19:47:51 2019 +0100

    Merge branch 'master' into MNG-6656

 README.md                                          |   6 +-
 .../plugin/DefaultLifecycleBindingsInjector.java   |   6 +-
 .../maven/cli/transfer/FileSizeFormatTest.java     |  21 +-
 .../inheritance/DefaultInheritanceAssembler.java   |   8 +-
 .../DefaultDependencyManagementInjector.java       |   4 +-
 .../DefaultPluginManagementInjector.java           |   8 +-
 .../apache/maven/model/merge/MavenModelMerger.java |  48 +--
 .../model/profile/DefaultProfileInjector.java      |  16 +-
 maven-model/pom.xml                                |   5 +
 .../org/apache/maven/model/merge/ModelMerger.java  | 317 ++++++-------------
 .../apache/maven/model/merge/ModelMergerTest.java  | 334 +++++++++++++++++++++
 .../plugin/lifecycle/LifecycleXpp3ReaderTest.java  |  55 ----
 maven-plugin-api/src/test/resources/lifecycle.xml  |  39 ---
 pom.xml                                            |  26 +-
 14 files changed, 483 insertions(+), 410 deletions(-)



[maven] 06/06: [MNG-6656] Introduce custom ModelMerger to keep inputLocationTracker from fileModel in rawModel

Posted by rf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MNG-6656
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 3d453bf25df69fecd645561f1d4b39732d52c5b1
Author: rfscholte <rf...@apache.org>
AuthorDate: Mon Dec 30 15:23:16 2019 +0100

    [MNG-6656] Introduce custom ModelMerger to keep inputLocationTracker from fileModel in rawModel
---
 .../maven/model/building/DefaultModelBuilder.java  | 196 +++++++++++++++++++--
 .../model/building/DefaultModelBuilderFactory.java |   1 +
 .../model/validation/DefaultModelValidator.java    |  35 ++--
 .../model/building/FileToRawModelMergerTest.java   |  82 +++++++++
 .../validation/DefaultModelValidatorTest.java      |   2 +-
 5 files changed, 279 insertions(+), 37 deletions(-)

diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index 5bfe617..0e2f10a 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -57,15 +57,21 @@ import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.feature.Features;
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.Build;
+import org.apache.maven.model.BuildBase;
+import org.apache.maven.model.CiManagement;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.InputSource;
 import org.apache.maven.model.Model;
+import org.apache.maven.model.ModelBase;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginContainer;
 import org.apache.maven.model.PluginManagement;
 import org.apache.maven.model.Profile;
+import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.model.Reporting;
 import org.apache.maven.model.Repository;
 import org.apache.maven.model.building.ModelProblem.Severity;
 import org.apache.maven.model.building.ModelProblem.Version;
@@ -75,6 +81,7 @@ import org.apache.maven.model.interpolation.ModelInterpolator;
 import org.apache.maven.model.io.ModelParseException;
 import org.apache.maven.model.management.DependencyManagementInjector;
 import org.apache.maven.model.management.PluginManagementInjector;
+import org.apache.maven.model.merge.ModelMerger;
 import org.apache.maven.model.normalization.ModelNormalizer;
 import org.apache.maven.model.path.ModelPathTranslator;
 import org.apache.maven.model.path.ModelUrlNormalizer;
@@ -124,7 +131,7 @@ public class DefaultModelBuilder
 
     @Inject
     private ModelUrlNormalizer modelUrlNormalizer;
-
+    
     @Inject
     private SuperPomProvider superPomProvider;
 
@@ -164,12 +171,13 @@ public class DefaultModelBuilder
     private Provider<BuildPomXMLFilterFactory> buildPomXMLFilterFactory; 
     
     @Inject
-    @Nullable
     private ModelCacheManager modelCacheManager;
     
     @Inject
     @Nullable
     private BuildPomXMLFilterListener xmlFilterListener;
+    
+    private ModelMerger modelMerger = new FileToRawModelMerger();
 
     public DefaultModelBuilder setModelProcessor( ModelProcessor modelProcessor )
     {
@@ -278,6 +286,11 @@ public class DefaultModelBuilder
         this.buildPomXMLFilterFactory = () -> buildPomXMLFilterFactory;
         return this;
     }
+    
+    public void setModelCacheManager( ModelCacheManager modelCacheManager )
+    {
+        this.modelCacheManager = modelCacheManager;
+    }
 
     @SuppressWarnings( "checkstyle:methodlength" )
     @Override
@@ -451,7 +464,7 @@ public class DefaultModelBuilder
 
         result.setEffectiveModel( resultModel );
         
-        if ( modelCacheManager != null && request.getPomFile() != null )
+        if ( request.getPomFile() != null )
         {
             modelCacheManager.put( request.getPomFile().toPath(), resultModel ); 
         }
@@ -664,27 +677,33 @@ public class DefaultModelBuilder
         modelValidator.validateFileModel( model, request, problems );
         request.setFileModel( model );
         
-        modelValidator.validateRawModel( model, request, problems );
-
-        if ( hasFatalErrors( problems ) )
-        {
-            throw problems.newModelBuildingException();
-        }
-        
-        if ( !hasModelErrors( problems ) && Features.buildConsumer().isActive() && pomFile != null )
+        if ( Features.buildConsumer().isActive() && pomFile != null )
         {
             try
             {
-                model = modelProcessor.read( transformData( pomFile.toPath() ), null );
+                Model rawModel = modelProcessor.read( transformData( pomFile.toPath() ), null );
 
                 model.setPomFile( pomFile );
+                
+                // model with locationTrackers, required for proper feedback during validations
+                model = request.getFileModel().clone();
+                
+                // Apply enriched data
+                modelMerger.merge( model, rawModel, false, null );
             }
             catch ( IOException | TransformerException | SAXException | ParserConfigurationException e )
             {
-                problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V37 ).setException( e ) );
+                problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.V37 ).setException( e ) );
             }
         }
 
+        modelValidator.validateRawModel( model, request, problems );
+
+        if ( hasFatalErrors( problems ) )
+        {
+            throw problems.newModelBuildingException();
+        }
+
         return model;
     }
 
@@ -1537,4 +1556,155 @@ public class DefaultModelBuilder
         }
     }
 
+    /**
+     * As long is Maven controls the BuildPomXMLFilter, the entities that need merging is known.
+     * All others can simply be copied from source to target to restore the locationTracker 
+     * 
+     * @author Robert Scholte
+     * @since 3.7.0
+     */
+    class FileToRawModelMerger extends ModelMerger
+    {
+        @Override
+        protected void mergeBuild_Extensions( Build target, Build source, boolean sourceDominant,
+                                              Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+
+        @Override
+        protected void mergeBuildBase_Resources( BuildBase target, BuildBase source, boolean sourceDominant,
+                                                 Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+        @Override
+        protected void mergeBuildBase_TestResources( BuildBase target, BuildBase source, boolean sourceDominant,
+                                                     Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+        @Override
+        protected void mergeCiManagement_Notifiers( CiManagement target, CiManagement source, boolean sourceDominant,
+                                                    Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+        @Override
+        protected void mergeDependencyManagement_Dependencies( DependencyManagement target, DependencyManagement source,
+                                                               boolean sourceDominant, Map<Object, Object> context )
+        {
+            Iterator<Dependency> sourceIterator = source.getDependencies().iterator();
+            target.getDependencies().stream().forEach( t -> mergeDependency( t, sourceIterator.next(), sourceDominant,
+                                                                             context ) );
+        }
+        
+        @Override
+        protected void mergeDependency_Exclusions( Dependency target, Dependency source, boolean sourceDominant,
+                                                   Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+        @Override
+        protected void mergeModel_Contributors( Model target, Model source, boolean sourceDominant,
+                                                Map<Object, Object> context )
+        {
+            // don't merge
+        }
+
+        @Override
+        protected void mergeModel_Developers( Model target, Model source, boolean sourceDominant,
+                                              Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+        @Override
+        protected void mergeModel_Licenses( Model target, Model source, boolean sourceDominant,
+                                            Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+        @Override
+        protected void mergeModel_MailingLists( Model target, Model source, boolean sourceDominant,
+                                                Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+        @Override
+        protected void mergeModel_Profiles( Model target, Model source, boolean sourceDominant,
+                                            Map<Object, Object> context )
+        {
+            Iterator<Profile> sourceIterator = source.getProfiles().iterator();
+            target.getProfiles().stream().forEach( t -> mergeProfile( t, sourceIterator.next(), sourceDominant,
+                                                                      context ) );
+        }
+        
+        @Override
+        protected void mergeModelBase_Dependencies( ModelBase target, ModelBase source, boolean sourceDominant,
+                                                    Map<Object, Object> context )
+        {
+            Iterator<Dependency> sourceIterator = source.getDependencies().iterator();
+            target.getDependencies().stream().forEach( t -> mergeDependency( t, sourceIterator.next(), sourceDominant,
+                                                                             context ) );
+        }
+        
+        @Override
+        protected void mergeModelBase_PluginRepositories( ModelBase target, ModelBase source, boolean sourceDominant,
+                                                          Map<Object, Object> context )
+        {
+            target.setPluginRepositories( source.getPluginRepositories() );
+        }
+        
+        @Override
+        protected void mergeModelBase_Repositories( ModelBase target, ModelBase source, boolean sourceDominant,
+                                                    Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+        @Override
+        protected void mergePlugin_Dependencies( Plugin target, Plugin source, boolean sourceDominant,
+                                                 Map<Object, Object> context )
+        {
+            Iterator<Dependency> sourceIterator = source.getDependencies().iterator();
+            target.getDependencies().stream().forEach( t -> mergeDependency( t, sourceIterator.next(), sourceDominant,
+                                                                             context ) );
+        }
+        
+        @Override
+        protected void mergePlugin_Executions( Plugin target, Plugin source, boolean sourceDominant,
+                                               Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+        @Override
+        protected void mergeReporting_Plugins( Reporting target, Reporting source, boolean sourceDominant,
+                                               Map<Object, Object> context )
+        {
+            // don't merge
+        }
+
+        @Override
+        protected void mergeReportPlugin_ReportSets( ReportPlugin target, ReportPlugin source, boolean sourceDominant,
+                                                     Map<Object, Object> context )
+        {
+            // don't merge
+        }
+        
+        @Override
+        protected void mergePluginContainer_Plugins( PluginContainer target, PluginContainer source,
+                                                     boolean sourceDominant, Map<Object, Object> context )
+        {
+            // don't merge
+        }
+    }
 }
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java
index cd499eb..82cd713 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java
@@ -227,6 +227,7 @@ public class DefaultModelBuilderFactory
         modelBuilder.setReportConfigurationExpander( newReportConfigurationExpander() );
         modelBuilder.setReportingConverter( newReportingConverter() );
         modelBuilder.setBuildPomXMLFilterFactory( new BuildPomXMLFilterFactory() );
+        modelBuilder.setModelCacheManager( new DefaultModelCacheManager() );
 
         return modelBuilder;
     }
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
index 1280a48..f789333 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
@@ -19,7 +19,6 @@ package org.apache.maven.model.validation;
  * under the License.
  */
 
-import org.apache.maven.feature.Features;
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.ActivationFile;
 import org.apache.maven.model.Build;
@@ -118,6 +117,17 @@ public class DefaultModelValidator
 
         if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
         {
+            Set<String> modules = new HashSet<>();
+            for ( int i = 0, n = m.getModules().size(); i < n; i++ )
+            {
+                String module = m.getModules().get( i );
+                if ( !modules.add( module ) )
+                {
+                    addViolation( problems, Severity.ERROR, Version.V20, "modules.module[" + i + "]", null,
+                                  "specifies duplicate child module " + module, m.getLocation( "modules" ) );
+                }
+            }
+
             Severity errOn30 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
 
             // [MNG-6074] Maven should produce an error if no model version has been set in a POM file used to build an
@@ -227,18 +237,8 @@ public class DefaultModelValidator
         
         if ( parent != null )
         {
-            InputLocationTracker locationTracker;
-            if ( Features.buildConsumer().isActive() )
-            {
-                locationTracker = request.getFileModel().getParent();
-            }
-            else
-            {
-                locationTracker = parent;
-            }
-            
             validateStringNotEmpty( "parent.version", problems, Severity.FATAL, Version.BASE, parent.getVersion(),
-                                    locationTracker );
+                                    parent );
         }
     }
 
@@ -396,17 +396,6 @@ public class DefaultModelValidator
 
         if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
         {
-            Set<String> modules = new HashSet<>();
-            for ( int i = 0, n = m.getModules().size(); i < n; i++ )
-            {
-                String module = m.getModules().get( i );
-                if ( !modules.add( module ) )
-                {
-                    addViolation( problems, Severity.ERROR, Version.V20, "modules.module[" + i + "]", null,
-                                  "specifies duplicate child module " + module, m.getLocation( "modules" ) );
-                }
-            }
-
             Severity errOn31 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 );
 
             validateBannedCharacters( EMPTY, "version", problems, errOn31, Version.V20, m.getVersion(), null, m,
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/building/FileToRawModelMergerTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/building/FileToRawModelMergerTest.java
new file mode 100644
index 0000000..485dc4c
--- /dev/null
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/building/FileToRawModelMergerTest.java
@@ -0,0 +1,82 @@
+package org.apache.maven.model.building;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import static org.hamcrest.Matchers.hasItems;
+import static org.junit.Assert.assertThat;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.maven.model.building.DefaultModelBuilder.FileToRawModelMerger;
+import org.apache.maven.model.merge.ModelMerger;
+import org.junit.Test;
+
+public class FileToRawModelMergerTest
+{
+
+    /**
+     * Ensures that all list-merge methods are overridden
+     */
+    @Test
+    public void testOverriddenMergeMethods()
+    {
+        List<String> methodNames =
+            Stream.of( ModelMerger.class.getDeclaredMethods() )
+                .filter( m -> m.getName().startsWith( "merge" ) )
+                .filter( m -> 
+                    {
+                        String baseName = m.getName().substring( 5 /* merge */ );
+                        String entity = baseName.substring( baseName.indexOf( '_' ) + 1 );
+                        try
+                        {
+                            Type returnType = m.getParameterTypes()[0].getMethod( "get" + entity ).getGenericReturnType();
+                            if ( returnType instanceof ParameterizedType )
+                            {
+                                return !( (ParameterizedType) returnType ).getActualTypeArguments()[0].equals( String.class );
+                            }
+                            else
+                            {
+                                return false;
+                            }
+                        }
+                        catch ( ReflectiveOperationException | SecurityException e )
+                        {
+                            return false;
+                        }
+                    } )
+                .map( Method::getName )
+                .collect( Collectors.toList() );
+
+        List<String> overriddenMethods =
+            Stream.of( FileToRawModelMerger.class.getDeclaredMethods() )
+                .map( Method::getName )
+                .filter( m -> m.startsWith( "merge" ) )
+                .collect( Collectors.toList() );
+
+        assertThat( overriddenMethods, hasItems( methodNames.toArray( new String[0] ) ) );
+    }
+    
+
+}
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
index b90fcc6..d2a9e60 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
@@ -376,7 +376,7 @@ public class DefaultModelValidatorTest
     public void testDuplicateModule()
         throws Exception
     {
-        SimpleProblemCollector result = validate( "duplicate-module.xml" );
+        SimpleProblemCollector result = validateRaw( "duplicate-module.xml" );
 
         assertViolations( result, 0, 1, 0 );
 


[maven] 01/06: Merge remote-tracking branch 'remotes/origin/master' into MNG-6656

Posted by rf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MNG-6656
in repository https://gitbox.apache.org/repos/asf/maven.git

commit ee8e8e27a6c9cdda5339f0ae0c973a1e9afbe4d1
Merge: 21be0b1 3332f4d
Author: rfscholte <rf...@apache.org>
AuthorDate: Tue Dec 10 21:59:30 2019 +0100

    Merge remote-tracking branch 'remotes/origin/master' into MNG-6656

 .asf.yaml                                          |   9 +
 README.md                                          |   4 +-
 .../AbstractArtifactResolutionException.java       |   2 +-
 .../project/validation/ModelValidationResult.java  |   6 +-
 .../resolver/ArtifactResolutionExceptionTest.java  |   2 +-
 .../PluginParameterExpressionEvaluatorTest.java    |   2 +-
 .../building/DefaultToolchainsBuilderTest.java     |   2 +-
 .../building/ToolchainsBuildingExceptionTest.java  |   2 +-
 maven-embedder/pom.xml                             |  88 ++---
 .../org/apache/maven/cli/CLIReportingUtils.java    |   2 +-
 .../impl/UnsupportedSlf4jBindingConfiguration.java |   2 +-
 .../src/test/embedder-test-project/pom.xml         |  48 ---
 .../src/main/java/org/apache/maven/App.java        |  13 -
 .../src/test/java/org/apache/maven/AppTest.java    |  38 --
 .../aggregate-mojo-failure/plugin/pom.xml          |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  36 --
 .../aggregate-mojo-failure/project/pom.xml         |  25 --
 .../bad-build-plan/plugin/pom.xml                  |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  35 --
 .../bad-build-plan/project/pom.xml                 |  25 --
 .../bad-dep-version/pom.xml                        |  33 --
 .../test-maven-ext/1/test-maven-ext-1.pom          |  34 --
 .../bad-ext-direct-deps/project/pom.xml            |  35 --
 .../1/bad-ext-plugin-dep-ver-maven-plugin-1.jar    | Bin 3166 -> 0 bytes
 .../1/bad-ext-plugin-dep-ver-maven-plugin-1.pom    |  55 ---
 .../bad-ext-plugin-dep-ver/plugin/pom.xml          |  57 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  33 --
 .../bad-ext-plugin-dep-ver/project/pom.xml         |  37 --
 .../1/bad-ext-plugin-maven-ver-maven-plugin-1.jar  | Bin 3166 -> 0 bytes
 .../1/bad-ext-plugin-maven-ver-maven-plugin-1.pom  |  54 ---
 .../maven-metadata-local.xml                       |  12 -
 .../bad-ext-plugin-maven-ver/plugin/pom.xml        |  57 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  33 --
 .../bad-ext-plugin-maven-ver/project/pom.xml       |  37 --
 .../bad-maven-version/pom.xml                      |  11 -
 .../bad-mg-dep-version/pom.xml                     |  35 --
 .../bad-non-dep-version/pom.xml                    |  35 --
 .../bad-profile-repo/pom.xml                       |   7 -
 .../bad-profile-repo/profiles.xml                  |  18 -
 .../config-rdonly-mojo-param/plugin/pom.xml        |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  39 --
 .../config-rdonly-mojo-param/project/pom.xml       |  47 ---
 .../deploy-repo-creation-err/pom.xml               |  41 ---
 .../duplicated-attachments/plugin/pom.xml          |  54 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  50 ---
 .../duplicated-attachments/project/pom.xml         |  25 --
 .../1/err-loading-plugin-maven-plugin-1.jar        | Bin 3166 -> 0 bytes
 .../1/err-loading-plugin-maven-plugin-1.pom        |  55 ---
 .../err-loading-plugin/project/pom.xml             |  45 ---
 .../org/apache/maven/errortest/dep/1/dep-1.pom     |  16 -
 .../1/err-resolving-ext-plugin-maven-plugin-1.jar  | Bin 3166 -> 0 bytes
 .../1/err-resolving-ext-plugin-maven-plugin-1.pom  |  60 ----
 .../err-resolving-ext-plugin/project/pom.xml       |  18 -
 .../org/apache/maven/errortest/dep/1/dep-1.pom     |  16 -
 .../err-resolving-project-dep/project/pom.xml      |  27 --
 .../apache/maven/test/error/mojoFailure/App.java   |  13 -
 .../maven/test/error/mojoFailure/AppTest.java      |  38 --
 .../test-maven-ext-dep/1/test-maven-ext-dep-1.pom  |  26 --
 .../test-maven-ext/1/test-maven-ext-1.pom          |  34 --
 .../ext-deps-resolve-err/project/pom.xml           |  35 --
 .../ext-plugin-artifact-missing-maven-plugin-1.pom |  55 ---
 .../ext-plugin-artifact-missing/project/pom.xml    |  37 --
 .../ext-plugin-realm-error/plugin/pom.xml          |  49 ---
 .../src/main/java/org/plugin/ComponentOne.java     |   8 -
 .../src/main/java/org/plugin/ComponentTwo.java     |   8 -
 .../src/main/java/org/plugin/TestPlugin.java       |  39 --
 .../main/resources/META-INF/plexus/components.xml  |  25 --
 .../ext-plugin-realm-error/project/pom.xml         |  36 --
 .../1/ext-plugin-version-err-maven-plugin-1.jar    | Bin 3166 -> 0 bytes
 .../1/ext-plugin-version-err-maven-plugin-1.pom    |  50 ---
 .../maven-metadata-local.xml                       |  10 -
 .../ext-plugin-version-err/plugin/pom.xml          |  57 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  33 --
 .../ext-plugin-version-err/project/pom.xml         |  36 --
 .../ext-realm-error/ext/pom.xml                    |  38 --
 .../ext/src/main/java/org/ext/App.java             |  13 -
 .../main/resources/META-INF/plexus/components.xml  |   1 -
 .../ext-realm-error/project/pom.xml                |  35 --
 .../interp-from-model/pom.xml                      |   7 -
 .../local-repo/org/test/bad-pom/1/bad-pom-1.pom    |   9 -
 .../interp-from-project/project/pom.xml            |  22 --
 .../load-extern-profiles-ioex/pom.xml              |   7 -
 .../load-extern-profiles-xex/pom.xml               |   7 -
 .../load-extern-profiles-xex/profiles.xml          |   4 -
 .../missing-direct-invoke-mojo/plugin/pom.xml      |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  36 --
 .../missing-module-pom/child1/pom.xml              |  19 -
 .../child1/src/main/java/org/test/App.java         |  13 -
 .../child1/src/test/java/org/test/AppTest.java     |  38 --
 .../missing-module-pom/pom.xml                     |  13 -
 .../missing-parent-pom/pom.xml                     |  11 -
 .../missing-req-mojo-param/plugin/pom.xml          |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  38 --
 .../missing-req-mojo-param/project/pom.xml         |  25 --
 .../mojo-config-error/plugin/pom.xml               |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  33 --
 .../src/main/resources/META-INF/maven/plugin.xml   |  38 --
 .../mojo-config-error/project/pom.xml              |  45 ---
 .../mojo-exec-err/plugin/pom.xml                   |  49 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  33 --
 .../mojo-exec-err/project/pom.xml                  |  26 --
 .../mojo-lookup-err/plugin/pom.xml                 |  54 ---
 .../src/main/java/org/plugin/TestPlugin.java       |  42 ---
 .../mojo-lookup-err/project/pom.xml                |  25 --
 .../parent-parse-ioex/child/pom.xml                |  10 -
 .../parent-parse-ioex/pom.xml                      |   0
 .../parent-parse-xex/child/pom.xml                 |  10 -
 .../parent-parse-xex/pom.xml                       |   7 -
 .../profile-activator-err/pom.xml                  |  39 --
 .../profile-activator-lookup-err/ext/pom.xml       |  38 --
 .../ext/src/main/java/org/ext/App.java             |  13 -
 .../main/resources/META-INF/plexus/components.xml  |  16 -
 .../profile-activator-lookup-err/project/pom.xml   |  46 ---
 .../project-collision/mod1/pom.xml                 |   7 -
 .../project-collision/mod2/pom.xml                 |   7 -
 .../project-collision/pom.xml                      |  12 -
 .../project-cycle/dep/pom.xml                      |  12 -
 .../error-reporting-projects/project-cycle/pom.xml |  19 -
 .../project-dep-missing/pom.xml                    |  22 --
 .../apache/maven/test/error/mojoFailure/App.java   |  13 -
 .../maven/test/error/mojoFailure/AppTest.java      |  38 --
 .../project-mojo-failure/pom.xml                   |  17 -
 .../apache/maven/test/error/mojoFailure/App.java   |  14 -
 .../maven/test/error/mojoFailure/AppTest.java      |  38 --
 .../project-parse-xex/pom.xml                      |  25 --
 .../project-validation/pom.xml                     |  13 -
 .../repo-creation-err/pom.xml                      |  41 ---
 .../test/eventing-projects/read-with-deps/pom.xml  |  15 -
 .../read-with-deps/repo/tests/dep/1/dep-1.pom      |   6 -
 .../eventing-projects/simple-read-project/pom.xml  |   6 -
 .../test/extensions/META-INF/plexus/components.xml |  28 --
 .../maven/cli/CLIManagerDocumentationTest.java     |   2 +-
 .../src/test/plugin-version-references/jar-pom.xml |  32 --
 .../plugin-version-references/maven-plugin-pom.xml |  36 --
 .../bad-module-non-recursive/badmodule/pom.xml     |  14 -
 .../bad-module-non-recursive/goodmodule/pom.xml    |  14 -
 .../test/projects/bad-module-non-recursive/pom.xml |  14 -
 .../src/test/projects/invalid-goal/pom.xml         |  49 ---
 .../project/pom.xml                                |  13 -
 .../src/main/java/org/codehaus/m2eclipse/App.java  |  13 -
 .../test/java/org/codehaus/m2eclipse/AppTest.java  |  38 --
 .../parent/1.0-SNAPSHOT/maven-metadata-company.xml |  11 -
 .../parent/1.0-SNAPSHOT/parent-1.0-SNAPSHOT.pom    |  18 -
 .../m2eclipse/parent/maven-metadata-local.xml      |  11 -
 .../settings.xml                                   |  23 --
 .../src/test/projects/optional-dep/pom.xml         |  20 --
 .../readProject-missingModuleIgnored/pom.xml       |  13 -
 .../modules/child1/pom.xml                         |  13 -
 .../readProject-withScmInheritance/pom.xml         |  19 -
 .../org.apache.maven/maven-core/pom.properties     |  18 -
 .../resources/pom-with-distribution-status.xml     |  30 --
 .../test/resources/pom-without-dependencies.xml    |  30 --
 maven-embedder/src/test/resources/pom.xml          |  34 --
 maven-embedder/src/test/resources/pom2.xml         |  48 ---
 .../test/resources/settings/invalid-settings.xml   |  24 --
 .../src/test/resources/settings/valid-settings.xml |  27 --
 maven-model-builder/src/main/mdo/profiles.mdo      | 399 ---------------------
 maven-model/pom.xml                                |  53 ---
 maven-plugin-api/pom.xml                           |   6 -
 pom.xml                                            |   7 +-
 160 files changed, 61 insertions(+), 4461 deletions(-)



[maven] 05/06: Merge branch 'master' into MNG-6656

Posted by rf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MNG-6656
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 630c22f4657f01ad3f0b22e6ad20d645ea6af83f
Merge: 9049d68 e3aa406
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun Dec 22 17:35:16 2019 +0100

    Merge branch 'master' into MNG-6656

 .../maven/artifact/testutils/TestFileManager.java  |   3 +-
 .../DefaultPluginDependenciesResolver.java         |  11 ++-
 .../DefaultProjectDependenciesResolver.java        |  11 ++-
 .../model/validation/DefaultModelValidator.java    |   7 +-
 .../org/apache/maven/model/merge/ModelMerger.java  |  91 ++----------------
 .../apache/maven/model/merge/ModelMergerTest.java  | 102 ++++++++++++++++++++-
 6 files changed, 126 insertions(+), 99 deletions(-)



[maven] 03/06: [MNG-6656] Improve ModelValidator

Posted by rf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MNG-6656
in repository https://gitbox.apache.org/repos/asf/maven.git

commit d9cc0e475952bc88f1187e00a0f0ff142f4c6f2a
Author: rfscholte <rf...@apache.org>
AuthorDate: Wed Dec 18 23:00:34 2019 +0100

    [MNG-6656] Improve ModelValidator
---
 .../apache/maven/project/ProjectBuilderTest.java   |  2 ++
 .../maven/model/building/DefaultModelBuilder.java  |  4 +++
 .../building/DefaultModelBuildingRequest.java      | 14 ++++++++++
 .../model/building/FilterModelBuildingRequest.java | 13 +++++++++
 .../maven/model/building/ModelBuildingRequest.java | 15 +++++++++++
 .../model/validation/DefaultModelValidator.java    | 31 ++++++++++++++++------
 .../maven/model/validation/ModelValidator.java     | 16 +++++++++--
 .../validation/DefaultModelValidatorTest.java      | 31 +++++++++++-----------
 8 files changed, 101 insertions(+), 25 deletions(-)

diff --git a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
index efa8a4c..d402f96 100644
--- a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
@@ -240,6 +240,7 @@ public class ProjectBuilderTest
         try
         {
             projectBuilder.build( pomFile, configuration );
+            fail();
         }
         catch ( InvalidArtifactRTException iarte )
         {
@@ -250,6 +251,7 @@ public class ProjectBuilderTest
         try
         {
             projectBuilder.build( Collections.singletonList( pomFile ), false, configuration );
+            fail();
         }
         catch ( ProjectBuildingException ex )
         {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index 8a46aed..5bfe617 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -660,6 +660,10 @@ public class DefaultModelBuilder
         model.setPomFile( pomFile );
 
         problems.setSource( model );
+
+        modelValidator.validateFileModel( model, request, problems );
+        request.setFileModel( model );
+        
         modelValidator.validateRawModel( model, request, problems );
 
         if ( hasFatalErrors( problems ) )
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
index b7b54d8..3cf3a89 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
@@ -38,6 +38,7 @@ import org.apache.maven.model.resolution.WorkspaceModelResolver;
 public class DefaultModelBuildingRequest
     implements ModelBuildingRequest
 {
+    private transient Model fileModel;
 
     private Model rawModel;
 
@@ -383,6 +384,19 @@ public class DefaultModelBuildingRequest
     }
 
     @Override
+    public Model getFileModel()
+    {
+        return fileModel;
+    }
+    
+    @Override
+    public ModelBuildingRequest setFileModel( Model fileModel )
+    {
+        this.fileModel = fileModel;
+        return this;
+    }
+    
+    @Override
     public Model getRawModel()
     {
         return rawModel;
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
index 527a257..fb38f16 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
@@ -257,6 +257,19 @@ class FilterModelBuildingRequest
     }
 
     @Override
+    public Model getFileModel()
+    {
+        return request.getFileModel();
+    }
+    
+    @Override
+    public ModelBuildingRequest setFileModel( Model fileModel )
+    {
+        request.setFileModel( fileModel );
+        return this;
+    }
+    
+    @Override
     public Model getRawModel()
     {
         return request.getRawModel();
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
index b8ae4f8..1e0b3da 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
@@ -63,6 +63,21 @@ public interface ModelBuildingRequest
      * Denotes strict validation as recommended by the current Maven version.
      */
     int VALIDATION_LEVEL_STRICT = VALIDATION_LEVEL_MAVEN_3_0;
+    
+    /**
+     * 
+     * @return the file model
+     * @since 3.7.0
+     */
+    Model getFileModel();
+    
+    /**
+     * 
+     * @param fileModel
+     * @return This request, never {@code null}.
+     * @since 3.7.0
+     */
+    ModelBuildingRequest setFileModel( Model fileModel );
 
     /**
      * Gets the raw model to build. If not set, model source will be used to load raw model.
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
index 86670eb..862c8ec 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
@@ -88,7 +88,7 @@ public class DefaultModelValidator
     private final Set<String> validIds = new HashSet<>();
 
     @Override
-    public void validateRawModel( Model m, ModelBuildingRequest request, ModelProblemCollector problems )
+    public void validateFileModel( Model m, ModelBuildingRequest request, ModelProblemCollector problems )
     {
         Parent parent = m.getParent();
         if ( parent != null )
@@ -99,13 +99,6 @@ public class DefaultModelValidator
             validateStringNotEmpty( "parent.artifactId", problems, Severity.FATAL, Version.BASE, parent.getArtifactId(),
                                     parent );
 
-            // resolvedModel will assign version based on relativePath
-            if ( !Features.buildConsumer().isActive() )
-            {
-                validateStringNotEmpty( "parent.version", problems, Severity.FATAL, Version.BASE, parent.getVersion(),
-                                        parent );
-            }
-
             if ( equals( parent.getGroupId(), m.getGroupId() ) && equals( parent.getArtifactId(), m.getArtifactId() ) )
             {
                 addViolation( problems, Severity.FATAL, Version.BASE, "parent.artifactId", null,
@@ -225,6 +218,28 @@ public class DefaultModelValidator
             }
         }
     }
+    
+    @Override
+    public void validateRawModel( Model m, ModelBuildingRequest request, ModelProblemCollector problems )
+    {
+        Parent parent = m.getParent();
+        
+        if ( parent != null )
+        {
+            InputLocationTracker locationTracker;
+            if ( Features.buildConsumer().isActive() )
+            {
+                locationTracker = request.getFileModel().getParent();
+            }
+            else
+            {
+                locationTracker = parent;
+            }
+            
+            validateStringNotEmpty( "parent.version", problems, Severity.FATAL, Version.BASE, parent.getVersion(),
+                                    locationTracker );
+        }
+    }
 
     private void validate30RawProfileActivation( ModelProblemCollector problems, Activation activation,
                                                  String sourceHint, String prefix, String fieldName,
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/ModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/ModelValidator.java
index 84e3fad..198ba5a 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/ModelValidator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/ModelValidator.java
@@ -30,15 +30,27 @@ import org.apache.maven.model.building.ModelProblemCollector;
  */
 public interface ModelValidator
 {
-
     /**
-     * Checks the specified (raw) model for missing or invalid values. The raw model is directly created from the POM
+     * Checks the specified file model for missing or invalid values. This model is directly created from the POM
      * file and has not been subjected to inheritance, interpolation or profile/default injection.
      *
      * @param model The model to validate, must not be {@code null}.
      * @param request The model building request that holds further settings, must not be {@code null}.
      * @param problems The container used to collect problems that were encountered, must not be {@code null}.
      */
+    default void validateFileModel( Model model, ModelBuildingRequest request, ModelProblemCollector problems )
+    {
+        // do nothing
+    }
+
+    /**
+     * Checks the specified (raw) model for missing or invalid values. The raw model is the file model + buildpom filter
+     * transformation and has not been subjected to inheritance, interpolation or profile/default injection.
+     *
+     * @param model The model to validate, must not be {@code null}.
+     * @param request The model building request that holds further settings, must not be {@code null}.
+     * @param problems The container used to collect problems that were encountered, must not be {@code null}.
+     */
     void validateRawModel( Model model, ModelBuildingRequest request, ModelProblemCollector problems );
 
     /**
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
index bf6b088..b90fcc6 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
@@ -22,7 +22,6 @@ package org.apache.maven.model.validation;
 import java.io.InputStream;
 import java.util.List;
 
-import org.apache.maven.feature.Features;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.DefaultModelBuildingRequest;
 import org.apache.maven.model.building.ModelBuildingRequest;
@@ -65,10 +64,14 @@ public class DefaultModelValidatorTest
         throws Exception
     {
         ModelBuildingRequest request = new DefaultModelBuildingRequest().setValidationLevel( level );
+        
+        Model model =  read( pom );
 
-        SimpleProblemCollector problems = new SimpleProblemCollector( read( pom ) );
+        SimpleProblemCollector problems = new SimpleProblemCollector( model );
+        
+        request.setFileModel( model );
 
-        validator.validateEffectiveModel( problems.getModel(), request, problems );
+        validator.validateEffectiveModel( model, request, problems );
 
         return problems;
     }
@@ -78,9 +81,15 @@ public class DefaultModelValidatorTest
     {
         ModelBuildingRequest request = new DefaultModelBuildingRequest().setValidationLevel( level );
 
-        SimpleProblemCollector problems = new SimpleProblemCollector( read( pom ) );
+        Model model = read( pom );
+        
+        SimpleProblemCollector problems = new SimpleProblemCollector( model );
 
-        validator.validateRawModel( problems.getModel(), request, problems );
+        validator.validateFileModel( model, request, problems );
+        
+        request.setFileModel( model );
+        
+        validator.validateRawModel( model, request, problems );
 
         return problems;
     }
@@ -416,18 +425,10 @@ public class DefaultModelValidatorTest
     {
         SimpleProblemCollector result = validateRaw( "incomplete-parent.xml" );
 
-        if ( Features.buildConsumer().isActive() )
-        {
-            assertViolations( result, 2, 0, 0 );
-        }
-        else
-        {
-            assertViolations( result, 3, 0, 0 );
-            assertTrue( result.getFatals().get( 2 ).contains( "parent.version" ) );
-        }
-
+        assertViolations( result, 3, 0, 0 );
         assertTrue( result.getFatals().get( 0 ).contains( "parent.groupId" ) );
         assertTrue( result.getFatals().get( 1 ).contains( "parent.artifactId" ) );
+        assertTrue( result.getFatals().get( 2 ).contains( "parent.version" ) );
     }
 
     public void testHardCodedSystemPath()