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()