You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by eo...@apache.org on 2020/03/14 14:04:02 UTC
[maven-studies] 01/02: Import Maven 3.7.0-SNAPSHOT
This is an automated email from the ASF dual-hosted git repository.
eolivelli pushed a commit to branch maven-metrics
in repository https://gitbox.apache.org/repos/asf/maven-studies.git
commit 739b210f7ac28e82d31672c45ec87cfc44fa9e9d
Author: Enrico Olivelli <en...@diennea.com>
AuthorDate: Sat Mar 14 15:03:00 2020 +0100
Import Maven 3.7.0-SNAPSHOT
---
CONTRIBUTING.md | 92 +
Jenkinsfile | 169 +
LICENSE | 202 +
NOTICE | 5 +
README.md | 88 +
apache-maven/README.txt | 79 +
apache-maven/pom.xml | 324 ++
apache-maven/src/bin/.gitattributes | 3 +
apache-maven/src/bin/m2.conf | 8 +
apache-maven/src/bin/mvn | 199 +
apache-maven/src/bin/mvn.cmd | 201 +
apache-maven/src/bin/mvnDebug | 34 +
apache-maven/src/bin/mvnDebug.cmd | 33 +
apache-maven/src/bin/mvnyjp | 35 +
.../src/conf/logging/simplelogger.properties | 32 +
apache-maven/src/conf/settings.xml | 257 ++
apache-maven/src/conf/toolchains.xml | 103 +
apache-maven/src/lib/ext/README.txt | 2 +
apache-maven/src/lib/jansi-native/README.txt | 7 +
.../main/appended-resources/META-INF/LICENSE.vm | 84 +
.../src/main/appended-resources/META-INF/NOTICE.vm | 116 +
.../appended-resources/licenses/Apache-2.0.txt | 202 +
.../main/appended-resources/licenses/CDDL-1.0.txt | 384 ++
.../main/appended-resources/licenses/EPL-1.0.txt | 210 +
.../licenses/MIT-jsoup-1.12.1.txt | 23 +
.../licenses/MIT-slf4j-api-1.7.29.txt | 23 +
apache-maven/src/main/assembly/bin.xml | 30 +
apache-maven/src/main/assembly/component.xml | 104 +
apache-maven/src/main/assembly/dir.xml | 30 +
apache-maven/src/main/assembly/src.xml | 58 +
apache-maven/src/site/site.xml | 31 +
.../apache/maven/settings/GlobalSettingsTest.java | 54 +
deploySite.sh | 23 +
doap_Maven.rdf | 301 ++
maven-artifact/pom.xml | 73 +
.../java/org/apache/maven/artifact/Artifact.java | 161 +
.../org/apache/maven/artifact/ArtifactUtils.java | 216 ++
.../org/apache/maven/artifact/DefaultArtifact.java | 588 +++
.../maven/artifact/InvalidArtifactRTException.java | 100 +
.../maven/artifact/handler/ArtifactHandler.java | 58 +
.../maven/artifact/metadata/ArtifactMetadata.java | 30 +
.../artifact/repository/ArtifactRepository.java | 134 +
.../repository/ArtifactRepositoryPolicy.java | 223 ++
.../maven/artifact/repository/Authentication.java | 129 +
.../layout/ArtifactRepositoryLayout.java | 38 +
.../layout/ArtifactRepositoryLayout2.java | 34 +
.../metadata/RepositoryMetadataStoreException.java | 40 +
.../AbstractArtifactResolutionException.java | 347 ++
.../resolver/ArtifactNotFoundException.java | 85 +
.../resolver/ArtifactResolutionException.java | 68 +
.../resolver/CyclicDependencyException.java | 45 +
.../MultipleArtifactsNotFoundException.java | 123 +
.../artifact/resolver/filter/ArtifactFilter.java | 30 +
.../maven/artifact/versioning/ArtifactVersion.java | 42 +
.../artifact/versioning/ComparableVersion.java | 795 ++++
.../versioning/DefaultArtifactVersion.java | 251 ++
.../InvalidVersionSpecificationException.java | 34 +
.../OverConstrainedVersionException.java | 49 +
.../maven/artifact/versioning/Restriction.java | 195 +
.../maven/artifact/versioning/VersionRange.java | 607 +++
.../java/org/apache/maven/repository/Proxy.java | 200 +
.../legacy/metadata/ArtifactMetadata.java | 83 +
maven-artifact/src/site/apt/index.apt | 47 +
maven-artifact/src/site/site.xml | 38 +
.../apache/maven/artifact/ArtifactUtilsTest.java | 81 +
.../apache/maven/artifact/DefaultArtifactTest.java | 140 +
.../artifact/handler/ArtifactHandlerMock.java | 100 +
.../artifact/versioning/ComparableVersionIT.java | 93 +
.../artifact/versioning/ComparableVersionTest.java | 325 ++
.../versioning/DefaultArtifactVersionTest.java | 223 ++
.../artifact/versioning/VersionRangeTest.java | 749 ++++
maven-builder-support/pom.xml | 36 +
.../org/apache/maven/building/DefaultProblem.java | 161 +
.../maven/building/DefaultProblemCollector.java | 64 +
.../java/org/apache/maven/building/FileSource.java | 107 +
.../java/org/apache/maven/building/Problem.java | 101 +
.../apache/maven/building/ProblemCollector.java | 59 +
.../maven/building/ProblemCollectorFactory.java | 43 +
.../java/org/apache/maven/building/Source.java | 49 +
.../org/apache/maven/building/StringSource.java | 120 +
.../java/org/apache/maven/building/UrlSource.java | 107 +
maven-builder-support/src/site/site.xml | 38 +
.../building/DefaultProblemCollectorTest.java | 76 +
.../apache/maven/building/DefaultProblemTest.java | 136 +
.../org/apache/maven/building/FileSourceTest.java | 79 +
.../building/ProblemCollectorFactoryTest.java | 45 +
.../apache/maven/building/StringSourceTest.java | 64 +
.../org/apache/maven/building/UrlSourceTest.java | 71 +
.../src/test/resources/source.txt | 1 +
maven-compat/pom.xml | 139 +
.../apache/maven/artifact/ArtifactScopeEnum.java | 131 +
.../org/apache/maven/artifact/ArtifactStatus.java | 124 +
.../artifact/UnknownRepositoryLayoutException.java | 54 +
.../maven/artifact/deployer/ArtifactDeployer.java | 64 +
.../deployer/ArtifactDeploymentException.java | 43 +
.../artifact/deployer/DefaultArtifactDeployer.java | 164 +
.../installer/ArtifactInstallationException.java | 43 +
.../artifact/installer/ArtifactInstaller.java | 60 +
.../installer/DefaultArtifactInstaller.java | 135 +
.../artifact/manager/DefaultWagonManager.java | 185 +
.../manager/WagonConfigurationException.java | 38 +
.../maven/artifact/manager/WagonManager.java | 56 +
.../repository/ArtifactRepositoryFactory.java | 59 +
.../repository/DefaultArtifactRepository.java | 267 ++
.../DefaultArtifactRepositoryFactory.java | 126 +
.../repository/layout/FlatRepositoryLayout.java | 91 +
.../metadata/DefaultRepositoryMetadataManager.java | 536 +++
.../metadata/GroupRepositoryMetadata.java | 119 +
.../repository/metadata/MetadataBridge.java | 172 +
.../repository/metadata/MetadataUtils.java | 39 +
.../metadata/RepositoryMetadataReadException.java | 40 +
.../SnapshotArtifactRepositoryMetadata.java | 98 +
.../maven/artifact/resolver/ArtifactCollector.java | 46 +
.../maven/artifact/resolver/ArtifactResolver.java | 116 +
.../artifact/resolver/DebugResolutionListener.java | 168 +
.../resolver/DefaultArtifactCollector.java | 34 +
.../artifact/resolver/DefaultArtifactResolver.java | 660 ++++
.../resolver/ResolutionListenerForDepMgmt.java | 43 +
.../artifact/resolver/UnresolvedArtifacts.java | 66 +
.../resolver/WarningResolutionListener.java | 90 +
.../resolver/filter/InversionArtifactFilter.java | 68 +
.../artifact/resolver/filter/OrArtifactFilter.java | 93 +
.../resolver/filter/TypeArtifactFilter.java | 66 +
.../artifact/versioning/ManagedVersionMap.java | 59 +
.../maven/execution/DefaultRuntimeInformation.java | 64 +
.../apache/maven/execution/RuntimeInformation.java | 34 +
.../profiles/DefaultMavenProfilesBuilder.java | 90 +
.../maven/profiles/DefaultProfileManager.java | 238 ++
.../maven/profiles/MavenProfilesBuilder.java | 37 +
.../org/apache/maven/profiles/ProfileManager.java | 61 +
.../maven/profiles/ProfilesConversionUtils.java | 154 +
.../activation/DetectedProfileActivator.java | 38 +
.../profiles/activation/FileProfileActivator.java | 112 +
.../activation/JdkPrefixProfileActivator.java | 100 +
.../OperatingSystemProfileActivator.java | 164 +
.../activation/ProfileActivationException.java | 42 +
.../profiles/activation/ProfileActivator.java | 38 +
.../activation/SystemPropertyProfileActivator.java | 117 +
.../maven/project/DefaultMavenProjectBuilder.java | 324 ++
.../DefaultProjectBuilderConfiguration.java | 110 +
.../project/InvalidProjectModelException.java | 77 +
.../apache/maven/project/MavenProjectBuilder.java | 77 +
.../project/MissingRepositoryElementException.java | 40 +
.../java/org/apache/maven/project/ModelUtils.java | 364 ++
.../maven/project/ProjectBuilderConfiguration.java | 55 +
.../org/apache/maven/project/ProjectUtils.java | 118 +
.../DefaultModelInheritanceAssembler.java | 747 ++++
.../inheritance/ModelInheritanceAssembler.java | 41 +
.../AbstractStringBasedModelInterpolator.java | 406 ++
.../interpolation/BuildTimestampValueSource.java | 63 +
.../interpolation/ModelInterpolationException.java | 70 +
.../project/interpolation/ModelInterpolator.java | 64 +
.../PathTranslatingPostProcessor.java | 64 +
.../interpolation/RegexBasedModelInterpolator.java | 58 +
.../StringSearchModelInterpolator.java | 408 ++
.../maven/project/path/DefaultPathTranslator.java | 260 ++
.../project/validation/DefaultModelValidator.java | 76 +
.../project/validation/ModelValidationResult.java | 95 +
.../maven/project/validation/ModelValidator.java | 37 +
.../maven/reporting/MavenReportException.java | 39 +
.../maven/repository/DefaultMirrorSelector.java | 208 +
.../maven/repository/MavenArtifactMetadata.java | 119 +
.../org/apache/maven/repository/MetadataGraph.java | 91 +
.../apache/maven/repository/MetadataGraphNode.java | 101 +
.../repository/MetadataResolutionRequest.java | 220 ++
.../maven/repository/MetadataResolutionResult.java | 363 ++
.../apache/maven/repository/MirrorSelector.java | 44 +
.../repository/UserLocalArtifactRepository.java | 77 +
.../maven/repository/VersionNotFoundException.java | 83 +
.../repository/legacy/ChecksumFailedException.java | 42 +
.../legacy/DefaultUpdateCheckManager.java | 428 +++
.../repository/legacy/DefaultWagonManager.java | 851 +++++
.../repository/legacy/LegacyRepositorySystem.java | 913 +++++
.../maven/repository/legacy/MavenArtifact.java | 96 +
.../repository/legacy/TransferListenerAdapter.java | 190 +
.../repository/legacy/UpdateCheckManager.java | 44 +
.../legacy/WagonConfigurationException.java | 65 +
.../maven/repository/legacy/WagonManager.java | 84 +
.../repository/ArtifactRepositoryFactory.java | 58 +
.../DefaultArtifactRepositoryFactory.java | 144 +
.../resolver/DefaultLegacyArtifactCollector.java | 818 ++++
.../legacy/resolver/LegacyArtifactCollector.java | 66 +
.../legacy/resolver/conflict/ConflictResolver.java | 44 +
.../resolver/conflict/ConflictResolverFactory.java | 48 +
.../ConflictResolverNotFoundException.java | 47 +
.../resolver/conflict/DefaultConflictResolver.java | 36 +
.../conflict/DefaultConflictResolverFactory.java | 80 +
.../conflict/FarthestConflictResolver.java | 47 +
.../resolver/conflict/NearestConflictResolver.java | 48 +
.../resolver/conflict/NewestConflictResolver.java | 62 +
.../resolver/conflict/OldestConflictResolver.java | 62 +
.../transform/AbstractVersionTransformation.java | 135 +
.../resolver/transform/ArtifactTransformation.java | 86 +
.../transform/ArtifactTransformationManager.java | 84 +
.../DefaultArtifactTransformationManager.java | 86 +
.../transform/LatestArtifactTransformation.java | 77 +
.../transform/ReleaseArtifactTransformation.java | 100 +
.../resolver/transform/SnapshotTransformation.java | 173 +
.../repository/metadata/ArtifactMetadata.java | 344 ++
.../repository/metadata/ClasspathContainer.java | 144 +
.../metadata/ClasspathTransformation.java | 46 +
.../metadata/DefaultClasspathTransformation.java | 173 +
.../DefaultGraphConflictResolutionPolicy.java | 73 +
.../metadata/DefaultGraphConflictResolver.java | 249 ++
.../metadata/GraphConflictResolutionException.java | 51 +
.../metadata/GraphConflictResolutionPolicy.java | 35 +
.../repository/metadata/GraphConflictResolver.java | 48 +
.../maven/repository/metadata/MetadataGraph.java | 514 +++
.../repository/metadata/MetadataGraphEdge.java | 191 +
.../MetadataGraphTransformationException.java | 50 +
.../repository/metadata/MetadataGraphVertex.java | 216 ++
.../repository/metadata/MetadataResolution.java | 71 +
.../metadata/MetadataResolutionException.java | 52 +
.../metadata/MetadataResolutionRequest.java | 79 +
.../MetadataResolutionRequestTypeEnum.java | 48 +
.../metadata/MetadataResolutionResult.java | 168 +
.../metadata/MetadataRetrievalException.java | 59 +
.../maven/repository/metadata/MetadataSource.java | 39 +
.../repository/metadata/MetadataTreeNode.java | 148 +
.../plugin/ExpressionDocumentationException.java | 40 +
.../usability/plugin/ExpressionDocumenter.java | 176 +
maven-compat/src/main/mdo/paramdoc.mdo | 154 +
maven-compat/src/main/mdo/profiles.mdo | 398 ++
.../maven/plugin-expressions/project.paramdoc.xml | 172 +
.../maven/plugin-expressions/rootless.paramdoc.xml | 48 +
.../maven/plugin-expressions/settings.paramdoc.xml | 53 +
.../src/main/resources/META-INF/maven/plugin.xml | 218 ++
maven-compat/src/site/apt/index.apt | 32 +
maven-compat/src/site/site.xml | 38 +
.../AbstractArtifactComponentTestCase.java | 374 ++
.../artifact/deployer/ArtifactDeployerTest.java | 67 +
.../deployer/SimpleArtifactMetadataSource.java | 66 +
.../factory/DefaultArtifactFactoryTest.java | 49 +
.../artifact/installer/ArtifactInstallerTest.java | 61 +
.../artifact/metadata/TestMetadataSource.java | 102 +
.../repository/MavenArtifactRepositoryTest.java | 59 +
.../resolver/ArtifactResolutionExceptionTest.java | 64 +
.../artifact/resolver/ArtifactResolverTest.java | 282 ++
.../resolver/DefaultArtifactResolverTest.java | 111 +
.../maven/artifact/resolver/TestFileWagon.java | 94 +
.../artifact/resolver/TestTransferListener.java | 43 +
.../resolver/filter/AndArtifactFilterTest.java | 54 +
.../resolver/filter/FilterHashEqualsTest.java | 50 +
.../resolver/filter/OrArtifactFilterTest.java | 54 +
.../resolver/filter/ScopeArtifactFilterTest.java | 96 +
.../maven/artifact/testutils/TestFileManager.java | 215 ++
.../transform/TransformationManagerTest.java | 46 +
.../manager/DefaultProfileManagerTest.java | 236 ++
.../project/AbstractMavenProjectTestCase.java | 185 +
.../maven/project/ClasspathArtifactResolver.java | 89 +
.../maven/project/EmptyLifecycleExecutor.java | 110 +
.../project/EmptyLifecyclePluginAnalyzer.java | 78 +
.../project/LegacyLocalRepositoryManager.java | 192 +
.../org/apache/maven/project/ModelUtilsTest.java | 619 +++
.../apache/maven/project/ProjectClasspathTest.java | 148 +
.../apache/maven/project/TestArtifactResolver.java | 30 +
.../maven/project/TestMavenRepositorySystem.java | 30 +
.../apache/maven/project/TestProjectBuilder.java | 68 +
.../AbstractProjectInheritanceTestCase.java | 57 +
.../inheritance/t00/ProjectInheritanceTest.java | 92 +
.../inheritance/t01/ProjectInheritanceTest.java | 92 +
.../inheritance/t02/ProjectInheritanceTest.java | 167 +
.../inheritance/t03/ProjectInheritanceTest.java | 68 +
.../inheritance/t04/ProjectInheritanceTest.java | 85 +
.../inheritance/t05/ProjectInheritanceTest.java | 78 +
.../inheritance/t06/ProjectInheritanceTest.java | 80 +
.../inheritance/t07/ProjectInheritanceTest.java | 81 +
.../inheritance/t08/ProjectInheritanceTest.java | 81 +
.../inheritance/t09/ProjectInheritanceTest.java | 119 +
.../inheritance/t10/ProjectInheritanceTest.java | 94 +
.../inheritance/t11/ProjectInheritanceTest.java | 64 +
.../inheritance/t12/ProjectInheritanceTest.java | 65 +
.../inheritance/t12scm/ProjectInheritanceTest.java | 125 +
.../project/path/DefaultPathTranslatorTest.java | 58 +
.../repository/DefaultMirrorSelectorTest.java | 38 +
.../maven/repository/LegacyRepositoryLayout.java | 89 +
.../repository/LegacyRepositorySystemTest.java | 207 +
.../maven/repository/MirrorProcessorTest.java | 259 ++
.../legacy/DefaultUpdateCheckManagerTest.java | 240 ++
.../repository/legacy/DefaultWagonManagerTest.java | 422 ++
.../legacy/LegacyRepositorySystemTest.java | 88 +
.../maven/repository/legacy/PerLookupWagon.java | 38 +
.../maven/repository/legacy/StringWagon.java | 100 +
.../org/apache/maven/repository/legacy/WagonA.java | 39 +
.../org/apache/maven/repository/legacy/WagonB.java | 39 +
.../org/apache/maven/repository/legacy/WagonC.java | 39 +
.../apache/maven/repository/legacy/WagonMock.java | 50 +
.../resolver/DefaultArtifactCollectorTest.java | 977 +++++
.../conflict/AbstractConflictResolverTest.java | 143 +
.../conflict/FarthestConflictResolverTest.java | 104 +
.../conflict/NearestConflictResolverTest.java | 104 +
.../conflict/NewestConflictResolverTest.java | 104 +
.../conflict/OldestConflictResolverTest.java | 105 +
.../DefaultClasspathTransformationTest.java | 120 +
.../DefaultGraphConflictResolutionPolicyTest.java | 59 +
.../metadata/DefaultGraphConflictResolverTest.java | 153 +
.../repository/metadata/TestMetadataSource.java | 99 +
.../org/apache/maven/its/a/0.1/a-0.1.jar | Bin 0 -> 1898 bytes
.../org/apache/maven/its/a/0.1/a-0.1.pom | 41 +
.../org/apache/maven/its/a/maven-metadata.xml | 12 +
.../org/apache/maven/its/b/0.1/b-0.1.jar | Bin 0 -> 1936 bytes
.../org/apache/maven/its/b/0.1/b-0.1.pom | 49 +
.../org/apache/maven/its/b/maven-metadata.xml | 12 +
.../test/repository-system/maven-core-2.1.0.jar | 0
.../resources/artifact-install/artifact-1.0.jar | 1 +
.../inheritance-repo/t00/maven/poms/p0-1.0.pom | 11 +
.../inheritance-repo/t00/maven/poms/p1-1.0.pom | 16 +
.../inheritance-repo/t00/maven/poms/p2-1.0.pom | 18 +
.../inheritance-repo/t00/maven/poms/p3-1.0.pom | 14 +
.../inheritance-repo/t00/maven/poms/p4-1.0.pom | 13 +
.../inheritance-repo/t01/maven.t01/poms/p0-1.0.pom | 11 +
.../inheritance-repo/t01/maven.t01/poms/p1-1.0.pom | 16 +
.../inheritance-repo/t01/maven.t01/poms/p2-1.0.pom | 16 +
.../inheritance-repo/t01/maven.t01/poms/p3-1.0.pom | 16 +
.../inheritance-repo/t01/maven.t01/poms/p4-1.0.pom | 16 +
.../inheritance-repo/t02/p0/p1/p2/p3/p4/p5/pom.xml | 32 +
.../inheritance-repo/t02/p0/p1/p2/p3/p4/pom.xml | 32 +
.../inheritance-repo/t02/p0/p1/p2/p3/pom.xml | 33 +
.../inheritance-repo/t02/p0/p1/p2/pom.xml | 37 +
.../resources/inheritance-repo/t02/p0/p1/pom.xml | 51 +
.../test/resources/inheritance-repo/t02/p0/pom.xml | 30 +
.../resources/inheritance-repo/t03/p0/p1/pom.xml | 45 +
.../test/resources/inheritance-repo/t03/p0/pom.xml | 30 +
.../t04/maven-test/jars/t04-a-1.0.jar | 1 +
.../t04/maven-test/jars/t04-b-1.0.jar | 1 +
.../t04/maven-test/jars/t04-b-2.0.jar | 1 +
.../t04/maven-test/jars/t04-c-1.0.jar | 1 +
.../t04/maven-test/jars/t04-c-2.0.jar | 1 +
.../t04/maven-test/poms/t04-a-1.0.pom | 21 +
.../t04/maven-test/poms/t04-b-1.0.pom | 7 +
.../t04/maven-test/poms/t04-b-2.0.pom | 7 +
.../t04/maven-test/poms/t04-c-1.0.pom | 7 +
.../t04/maven-test/poms/t04-c-2.0.pom | 7 +
.../resources/inheritance-repo/t04/p0/p1/pom.xml | 41 +
.../test/resources/inheritance-repo/t04/p0/pom.xml | 37 +
.../t05/maven-test/jars/t05-a-1.0.jar | 1 +
.../t05/maven-test/jars/t05-a-2.0.jar | 1 +
.../t05/maven-test/jars/t05-b-1.0.jar | 1 +
.../t05/maven-test/jars/t05-b-1.1.jar | 1 +
.../t05/maven-test/jars/t05-b-2.0.jar | 1 +
.../t05/maven-test/jars/t05-c-1.0.jar | 1 +
.../t05/maven-test/jars/t05-d-1.0.jar | 1 +
.../t05/maven-test/jars/t05-d-1.1.jar | 1 +
.../t05/maven-test/jars/t05-d-1.2.jar | 1 +
.../t05/maven-test/poms/t05-a-1.0.pom | 23 +
.../t05/maven-test/poms/t05-a-2.0.pom | 23 +
.../t05/maven-test/poms/t05-b-1.0.pom | 24 +
.../t05/maven-test/poms/t05-b-1.1.pom | 24 +
.../t05/maven-test/poms/t05-b-2.0.pom | 24 +
.../t05/maven-test/poms/t05-c-1.0.pom | 17 +
.../t05/maven-test/poms/t05-d-1.0.pom | 7 +
.../t05/maven-test/poms/t05-d-1.1.pom | 7 +
.../t05/maven-test/poms/t05-d-1.2.pom | 7 +
.../resources/inheritance-repo/t05/p0/p1/pom.xml | 54 +
.../test/resources/inheritance-repo/t05/p0/pom.xml | 36 +
.../t06/maven-test/jars/t06-a-1.0.jar | 1 +
.../t06/maven-test/jars/t06-b-1.0.jar | 1 +
.../t06/maven-test/jars/t06-b-1.1.jar | 1 +
.../t06/maven-test/jars/t06-c-1.0.jar | 1 +
.../t06/maven-test/jars/t06-d-1.0.jar | 1 +
.../t06/maven-test/jars/t06-d-1.1.jar | 1 +
.../t06/maven-test/jars/t06-d-1.2.jar | 1 +
.../t06/maven-test/poms/t06-a-1.0.pom | 23 +
.../t06/maven-test/poms/t06-b-1.0.pom | 24 +
.../t06/maven-test/poms/t06-b-1.1.pom | 24 +
.../t06/maven-test/poms/t06-c-1.0.pom | 17 +
.../t06/maven-test/poms/t06-d-1.0.pom | 7 +
.../t06/maven-test/poms/t06-d-1.1.pom | 7 +
.../t06/maven-test/poms/t06-d-1.2.pom | 7 +
.../resources/inheritance-repo/t06/p0/p1/pom.xml | 54 +
.../test/resources/inheritance-repo/t06/p0/pom.xml | 37 +
.../t07/maven-test/jars/t07-a-1.0.jar | 1 +
.../t07/maven-test/jars/t07-b-1.0.jar | 1 +
.../t07/maven-test/jars/t07-b-1.1.jar | 1 +
.../t07/maven-test/jars/t07-c-1.0.jar | 1 +
.../t07/maven-test/jars/t07-d-1.0.jar | 1 +
.../t07/maven-test/jars/t07-d-1.1.jar | 1 +
.../t07/maven-test/jars/t07-d-1.2.jar | 1 +
.../t07/maven-test/poms/t07-a-1.0.pom | 23 +
.../t07/maven-test/poms/t07-b-1.0.pom | 24 +
.../t07/maven-test/poms/t07-b-1.1.pom | 24 +
.../t07/maven-test/poms/t07-c-1.0.pom | 17 +
.../t07/maven-test/poms/t07-d-1.0.pom | 7 +
.../t07/maven-test/poms/t07-d-1.1.pom | 7 +
.../t07/maven-test/poms/t07-d-1.2.pom | 7 +
.../resources/inheritance-repo/t07/p0/p1/pom.xml | 54 +
.../test/resources/inheritance-repo/t07/p0/pom.xml | 37 +
.../t08/maven-test/jars/t08-a-1.0.jar | 1 +
.../t08/maven-test/jars/t08-b-1.0.jar | 1 +
.../t08/maven-test/jars/t08-b-1.1.jar | 1 +
.../t08/maven-test/jars/t08-c-1.0.jar | 1 +
.../t08/maven-test/jars/t08-d-1.0.jar | 1 +
.../t08/maven-test/jars/t08-d-1.1.jar | 1 +
.../t08/maven-test/jars/t08-d-1.2.jar | 1 +
.../t08/maven-test/poms/t08-a-1.0.pom | 23 +
.../t08/maven-test/poms/t08-b-1.0.pom | 24 +
.../t08/maven-test/poms/t08-b-1.1.pom | 24 +
.../t08/maven-test/poms/t08-c-1.0.pom | 17 +
.../t08/maven-test/poms/t08-d-1.0.pom | 7 +
.../t08/maven-test/poms/t08-d-1.1.pom | 7 +
.../t08/maven-test/poms/t08-d-1.2.pom | 7 +
.../resources/inheritance-repo/t08/p0/p1/pom.xml | 59 +
.../test/resources/inheritance-repo/t08/p0/pom.xml | 37 +
.../t09/maven-test/jars/t09-a-1.0.jar | 1 +
.../t09/maven-test/jars/t09-b-1.0.jar | 1 +
.../t09/maven-test/jars/t09-c-1.0.jar | 1 +
.../t09/maven-test/jars/t09-d-1.0.jar | 1 +
.../t09/maven-test/poms/t09-a-1.0.pom | 24 +
.../t09/maven-test/poms/t09-b-1.0.pom | 17 +
.../t09/maven-test/poms/t09-c-1.0.pom | 7 +
.../t09/maven-test/poms/t09-d-1.0.pom | 17 +
.../resources/inheritance-repo/t09/p0/p1/pom.xml | 36 +
.../resources/inheritance-repo/t09/p0/p2/pom.xml | 42 +
.../test/resources/inheritance-repo/t09/p0/pom.xml | 38 +
.../t10/maven-test/jars/t10-a-1.0.jar | 1 +
.../t10/maven-test/jars/t10-b-1.0.jar | 1 +
.../t10/maven-test/jars/t10-c-1.0.jar | 1 +
.../t10/maven-test/poms/t10-a-1.0.pom | 24 +
.../t10/maven-test/poms/t10-b-1.0.pom | 7 +
.../t10/maven-test/poms/t10-c-1.0.pom | 7 +
.../resources/inheritance-repo/t10/p0/p1/pom.xml | 42 +
.../test/resources/inheritance-repo/t10/p0/pom.xml | 41 +
.../resources/inheritance-repo/t11/p0/p1/pom.xml | 16 +
.../test/resources/inheritance-repo/t11/p0/pom.xml | 27 +
.../resources/inheritance-repo/t12/p0/p1/pom.xml | 29 +
.../test/resources/inheritance-repo/t12/p0/pom.xml | 30 +
.../t12scm/maven/p0/1.0/p0-1.0.pom | 18 +
.../t12scm/maven/p1/1.0/p1-1.0.pom | 11 +
.../inheritance-repo/t12scm/p0/modules/p1/pom.xml | 11 +
.../resources/inheritance-repo/t12scm/p0/pom.xml | 18 +
.../src/test/resources/local-repo/marker.txt | 1 +
.../maven-test/jars/maven-test-a-1.0.jar | 1 +
.../maven-test/jars/maven-test-b-1.0.jar | 1 +
.../maven-test/jars/maven-test-c-1.0.jar | 1 +
.../maven-test/jars/maven-test-d-1.0.jar | 1 +
.../maven-test/poms/maven-test-a-1.0.pom | 23 +
.../maven-test/poms/maven-test-b-1.0.pom | 23 +
.../maven-test/poms/maven-test-c-1.0.pom | 16 +
.../maven-test/poms/maven-test-d-1.1.pom | 7 +
.../maven-test/poms/maven-test-d-1.2.pom | 7 +
.../jars/maven-snapshot-a-1.0-SNAPSHOT.jar | 1 +
...en-snapshot-a-1.0-SNAPSHOT.jar.snapshot-version | 1 +
.../jars/maven-snapshot-b-1.0-SNAPSHOT.jar | 1 +
...en-snapshot-b-1.0-SNAPSHOT.jar.snapshot-version | 1 +
.../jars/maven-snapshot-e-1.0-SNAPSHOT.jar | 1 +
...en-snapshot-e-1.0-SNAPSHOT.jar.snapshot-version | 1 +
.../poms/maven-test-snapshot-resolving-1.0.pom | 49 +
.../artifact/deployer/ArtifactDeployerTest.xml | 23 +
.../artifact/installer/ArtifactInstallerTest.xml | 23 +
.../artifact/manager/DefaultWagonManagerTest.xml | 48 +
.../artifact/resolver/ArtifactResolverTest.xml | 71 +
.../artifact/resolver/ArtifactUpdatePolicyTest.xml | 29 +
.../maven/project/AbstractMavenProjectTestCase.xml | 9 +
maven-compat/src/test/resources/pom.xml | 155 +
.../scope/project-with-scoped-dependencies.xml | 99 +
.../projects/scope/transitive-compile-dep.xml | 57 +
.../projects/scope/transitive-default-dep.xml | 58 +
.../projects/scope/transitive-provided-dep.xml | 57 +
.../projects/scope/transitive-runtime-dep.xml | 58 +
.../projects/scope/transitive-test-dep.xml | 58 +
maven-core/lifecycle-executor.txt | 217 ++
maven-core/plugin-manager.txt | 184 +
maven-core/pom.xml | 222 ++
.../maven/AbstractMavenLifecycleParticipant.java | 77 +
.../org/apache/maven/ArtifactFilterManager.java | 54 +
.../maven/ArtifactFilterManagerDelegate.java | 34 +
.../src/main/java/org/apache/maven/BuildAbort.java | 39 +
.../org/apache/maven/BuildFailureException.java | 39 +
.../apache/maven/DefaultArtifactFilterManager.java | 112 +
.../main/java/org/apache/maven/DefaultMaven.java | 537 +++
.../maven/DefaultProjectDependenciesResolver.java | 222 ++
.../apache/maven/DuplicateProjectException.java | 61 +
.../org/apache/maven/InternalErrorException.java | 36 +
.../src/main/java/org/apache/maven/Maven.java | 38 +
.../org/apache/maven/MavenExecutionException.java | 55 +
.../org/apache/maven/MissingModuleException.java | 51 +
.../apache/maven/ProjectBuildFailureException.java | 55 +
.../org/apache/maven/ProjectCycleException.java | 39 +
.../apache/maven/ProjectDependenciesResolver.java | 95 +
.../main/java/org/apache/maven/ReactorReader.java | 250 ++
.../java/org/apache/maven/RepositoryUtils.java | 436 +++
.../main/java/org/apache/maven/SessionScoped.java | 42 +
.../DependencyResolutionRequiredException.java | 35 +
.../maven/artifact/InvalidRepositoryException.java | 65 +
.../maven/artifact/factory/ArtifactFactory.java | 63 +
.../artifact/factory/DefaultArtifactFactory.java | 165 +
.../artifact/handler/DefaultArtifactHandler.java | 134 +
.../handler/manager/ArtifactHandlerManager.java | 37 +
.../manager/DefaultArtifactHandlerManager.java | 77 +
.../metadata/AbstractArtifactMetadata.java | 36 +
.../ArtifactMetadataRetrievalException.java | 58 +
.../artifact/metadata/ArtifactMetadataSource.java | 56 +
.../maven/artifact/metadata/ResolutionGroup.java | 49 +
.../repository/DefaultRepositoryRequest.java | 134 +
.../repository/LegacyLocalRepositoryManager.java | 432 +++
.../repository/MavenArtifactRepository.java | 417 ++
.../maven/artifact/repository/RepositoryCache.java | 58 +
.../artifact/repository/RepositoryRequest.java | 95 +
.../repository/layout/DefaultRepositoryLayout.java | 112 +
.../metadata/AbstractRepositoryMetadata.java | 233 ++
.../metadata/ArtifactRepositoryMetadata.java | 129 +
.../repository/metadata/RepositoryMetadata.java | 92 +
.../RepositoryMetadataDeploymentException.java | 40 +
.../RepositoryMetadataInstallationException.java | 40 +
.../metadata/RepositoryMetadataManager.java | 64 +
.../RepositoryMetadataResolutionException.java | 40 +
.../metadata/io/DefaultMetadataReader.java | 91 +
.../metadata/io/MetadataParseException.java | 93 +
.../repository/metadata/io/MetadataReader.java | 82 +
.../resolver/ArtifactResolutionRequest.java | 329 ++
.../resolver/ArtifactResolutionResult.java | 374 ++
.../resolver/DefaultResolutionErrorHandler.java | 89 +
.../artifact/resolver/ResolutionErrorHandler.java | 31 +
.../artifact/resolver/ResolutionListener.java | 109 +
.../maven/artifact/resolver/ResolutionNode.java | 255 ++
.../filter/AbstractScopeArtifactFilter.java | 107 +
.../resolver/filter/AndArtifactFilter.java | 99 +
.../filter/CumulativeScopeArtifactFilter.java | 122 +
.../resolver/filter/ExcludesArtifactFilter.java | 44 +
.../resolver/filter/ExclusionArtifactFilter.java | 68 +
.../resolver/filter/ExclusionSetFilter.java | 86 +
.../resolver/filter/IncludesArtifactFilter.java | 93 +
.../resolver/filter/ScopeArtifactFilter.java | 75 +
.../apache/maven/bridge/MavenRepositorySystem.java | 868 +++++
.../classrealm/ArtifactClassRealmConstituent.java | 76 +
.../maven/classrealm/ClassRealmConstituent.java | 74 +
.../apache/maven/classrealm/ClassRealmManager.java | 88 +
.../classrealm/ClassRealmManagerDelegate.java | 36 +
.../apache/maven/classrealm/ClassRealmRequest.java | 100 +
.../maven/classrealm/DefaultClassRealmManager.java | 407 ++
.../maven/classrealm/DefaultClassRealmRequest.java | 82 +
.../BasedirBeanConfigurationPathTranslator.java | 71 +
.../configuration/BeanConfigurationException.java | 41 +
.../BeanConfigurationPathTranslator.java | 41 +
.../configuration/BeanConfigurationRequest.java | 130 +
.../BeanConfigurationValuePreprocessor.java | 45 +
.../maven/configuration/BeanConfigurator.java | 44 +
.../DefaultBeanConfigurationRequest.java | 190 +
.../internal/DefaultBeanConfigurator.java | 154 +
.../apache/maven/eventspy/AbstractEventSpy.java | 45 +
.../java/org/apache/maven/eventspy/EventSpy.java | 79 +
.../eventspy/internal/EventSpyDispatcher.java | 146 +
.../internal/EventSpyExecutionListener.java | 163 +
.../internal/EventSpyRepositoryListener.java | 176 +
.../maven/exception/DefaultExceptionHandler.java | 342 ++
.../apache/maven/exception/ExceptionHandler.java | 30 +
.../apache/maven/exception/ExceptionSummary.java | 82 +
.../maven/execution/AbstractExecutionListener.java | 116 +
.../org/apache/maven/execution/BuildFailure.java | 61 +
.../org/apache/maven/execution/BuildSuccess.java | 44 +
.../org/apache/maven/execution/BuildSummary.java | 77 +
.../execution/DefaultMavenExecutionRequest.java | 1286 +++++++
.../DefaultMavenExecutionRequestPopulator.java | 321 ++
.../execution/DefaultMavenExecutionResult.java | 111 +
.../org/apache/maven/execution/ExecutionEvent.java | 92 +
.../apache/maven/execution/ExecutionListener.java | 66 +
.../maven/execution/MavenExecutionRequest.java | 445 +++
.../MavenExecutionRequestPopulationException.java | 43 +
.../execution/MavenExecutionRequestPopulator.java | 74 +
.../maven/execution/MavenExecutionResult.java | 70 +
.../org/apache/maven/execution/MavenSession.java | 442 +++
.../apache/maven/execution/MojoExecutionEvent.java | 88 +
.../maven/execution/MojoExecutionListener.java | 42 +
.../maven/execution/ProjectDependencyGraph.java | 74 +
.../maven/execution/ProjectExecutionEvent.java | 92 +
.../maven/execution/ProjectExecutionListener.java | 46 +
.../org/apache/maven/execution/ReactorManager.java | 190 +
.../apache/maven/execution/SettingsAdapter.java | 126 +
.../maven/execution/scope/MojoExecutionScoped.java | 42 +
.../execution/scope/WeakMojoExecutionListener.java | 46 +
.../scope/internal/MojoExecutionScope.java | 186 +
.../internal/MojoExecutionScopeCoreModule.java | 48 +
.../scope/internal/MojoExecutionScopeModule.java | 59 +
.../maven/extension/internal/CoreExports.java | 75 +
.../extension/internal/CoreExportsProvider.java | 56 +
.../extension/internal/CoreExtensionEntry.java | 136 +
.../apache/maven/graph/DefaultGraphBuilder.java | 483 +++
.../maven/graph/DefaultProjectDependencyGraph.java | 161 +
.../graph/FilteredProjectDependencyGraph.java | 116 +
.../java/org/apache/maven/graph/GraphBuilder.java | 36 +
.../DefaultRepositorySystemSessionFactory.java | 270 ++
.../internal/aether/LoggingRepositoryListener.java | 141 +
.../maven/lifecycle/DefaultLifecycleExecutor.java | 177 +
.../apache/maven/lifecycle/DefaultLifecycles.java | 145 +
.../maven/lifecycle/LifeCyclePluginAnalyzer.java | 32 +
.../java/org/apache/maven/lifecycle/Lifecycle.java | 88 +
.../lifecycle/LifecycleExecutionException.java | 107 +
.../apache/maven/lifecycle/LifecycleExecutor.java | 89 +
.../maven/lifecycle/LifecycleMappingDelegate.java | 52 +
.../lifecycle/LifecycleNotFoundException.java | 54 +
.../lifecycle/LifecyclePhaseNotFoundException.java | 55 +
.../apache/maven/lifecycle/MavenExecutionPlan.java | 205 +
.../maven/lifecycle/MissingProjectException.java | 41 +
.../maven/lifecycle/MojoExecutionConfigurator.java | 45 +
.../maven/lifecycle/NoGoalSpecifiedException.java | 41 +
.../lifecycle/internal/BuildListCalculator.java | 68 +
.../lifecycle/internal/BuildThreadFactory.java | 39 +
.../internal/CompoundProjectExecutionListener.java | 72 +
.../lifecycle/internal/DefaultExecutionEvent.java | 77 +
.../internal/DefaultExecutionEventCatapult.java | 119 +
.../DefaultLifecycleExecutionPlanCalculator.java | 586 +++
.../internal/DefaultLifecycleMappingDelegate.java | 157 +
.../internal/DefaultLifecyclePluginAnalyzer.java | 280 ++
.../DefaultLifecycleTaskSegmentCalculator.java | 155 +
.../internal/DefaultMojoExecutionConfigurator.java | 108 +
.../internal/DefaultProjectArtifactFactory.java | 56 +
.../lifecycle/internal/DependencyContext.java | 115 +
.../lifecycle/internal/ExecutionEventCatapult.java | 40 +
.../lifecycle/internal/ExecutionPlanItem.java | 85 +
.../apache/maven/lifecycle/internal/GoalTask.java | 46 +
.../lifecycle/internal/LifecycleDebugLogger.java | 183 +
.../internal/LifecycleDependencyResolver.java | 382 ++
.../internal/LifecycleExecutionPlanCalculator.java | 66 +
.../lifecycle/internal/LifecycleModuleBuilder.java | 154 +
.../internal/LifecyclePluginResolver.java | 92 +
.../maven/lifecycle/internal/LifecycleStarter.java | 150 +
.../maven/lifecycle/internal/LifecycleTask.java | 51 +
.../internal/LifecycleTaskSegmentCalculator.java | 61 +
.../lifecycle/internal/MojoDescriptorCreator.java | 309 ++
.../maven/lifecycle/internal/MojoExecutor.java | 385 ++
.../maven/lifecycle/internal/PhaseRecorder.java | 77 +
.../lifecycle/internal/ProjectArtifactFactory.java | 40 +
.../maven/lifecycle/internal/ProjectBuildList.java | 159 +
.../maven/lifecycle/internal/ProjectIndex.java | 71 +
.../maven/lifecycle/internal/ProjectSegment.java | 110 +
.../lifecycle/internal/ReactorBuildStatus.java | 80 +
.../maven/lifecycle/internal/ReactorContext.java | 83 +
.../maven/lifecycle/internal/TaskSegment.java | 73 +
.../maven/lifecycle/internal/builder/Builder.java | 48 +
.../lifecycle/internal/builder/BuilderCommon.java | 199 +
.../internal/builder/BuilderNotFoundException.java | 32 +
.../multithreaded/ConcurrencyDependencyGraph.java | 155 +
.../multithreaded/MultiThreadedBuilder.java | 195 +
.../builder/multithreaded/ThreadOutputMuxer.java | 477 +++
.../singlethreaded/SingleThreadedBuilder.java | 70 +
.../lifecycle/mapping/DefaultLifecycleMapping.java | 120 +
.../apache/maven/lifecycle/mapping/Lifecycle.java | 118 +
.../maven/lifecycle/mapping/LifecycleMapping.java | 42 +
.../maven/lifecycle/mapping/LifecycleMojo.java | 66 +
.../maven/lifecycle/mapping/LifecyclePhase.java | 119 +
.../plugin/DefaultLifecycleBindingsInjector.java | 201 +
.../maven/monitor/event/EventDispatcher.java | 37 +
.../apache/maven/monitor/event/EventMonitor.java | 35 +
.../apache/maven/plugin/BuildPluginManager.java | 54 +
.../java/org/apache/maven/plugin/CacheUtils.java | 152 +
.../plugin/CompoundMojoExecutionListener.java | 64 +
.../CycleDetectedInPluginGraphException.java | 46 +
.../maven/plugin/DebugConfigurationListener.java | 91 +
.../maven/plugin/DefaultBuildPluginManager.java | 247 ++
.../maven/plugin/DefaultExtensionRealmCache.java | 170 +
.../maven/plugin/DefaultPluginArtifactsCache.java | 206 +
.../maven/plugin/DefaultPluginDescriptorCache.java | 218 ++
.../maven/plugin/DefaultPluginRealmCache.java | 213 ++
.../apache/maven/plugin/ExtensionRealmCache.java | 101 +
.../plugin/InvalidPluginDescriptorException.java | 47 +
.../maven/plugin/InvalidPluginException.java | 48 +
.../org/apache/maven/plugin/LegacySupport.java | 59 +
.../apache/maven/plugin/MavenPluginManager.java | 128 +
.../apache/maven/plugin/MavenPluginValidator.java | 81 +
.../org/apache/maven/plugin/MojoExecution.java | 240 ++
.../apache/maven/plugin/PluginArtifactsCache.java | 104 +
.../maven/plugin/PluginConfigurationException.java | 74 +
.../maven/plugin/PluginContainerException.java | 88 +
.../apache/maven/plugin/PluginDescriptorCache.java | 58 +
.../plugin/PluginDescriptorParsingException.java | 58 +
.../maven/plugin/PluginExecutionException.java | 93 +
.../maven/plugin/PluginIncompatibleException.java | 36 +
.../apache/maven/plugin/PluginLoaderException.java | 124 +
.../org/apache/maven/plugin/PluginManager.java | 82 +
.../maven/plugin/PluginManagerException.java | 197 +
.../maven/plugin/PluginNotFoundException.java | 58 +
.../maven/plugin/PluginParameterException.java | 195 +
.../plugin/PluginParameterExpressionEvaluator.java | 485 +++
.../org/apache/maven/plugin/PluginRealmCache.java | 97 +
.../maven/plugin/PluginResolutionException.java | 47 +
.../plugin/internal/DefaultLegacySupport.java | 74 +
.../plugin/internal/DefaultMavenPluginManager.java | 909 +++++
.../DefaultPluginDependenciesResolver.java | 318 ++
.../plugin/internal/DefaultPluginManager.java | 257 ++
.../maven/plugin/internal/PlexusUtilsInjector.java | 87 +
.../internal/PluginDependenciesResolver.java | 71 +
.../PluginDependencyResolutionListener.java | 150 +
.../internal/ValidatingConfigurationListener.java | 97 +
.../maven/plugin/internal/WagonExcluder.java | 109 +
.../plugin/prefix/DefaultPluginPrefixRequest.java | 156 +
.../prefix/NoPluginFoundForPrefixException.java | 68 +
.../maven/plugin/prefix/PluginPrefixRequest.java | 115 +
.../maven/plugin/prefix/PluginPrefixResolver.java | 42 +
.../maven/plugin/prefix/PluginPrefixResult.java | 55 +
.../internal/DefaultPluginPrefixResolver.java | 294 ++
.../prefix/internal/DefaultPluginPrefixResult.java | 90 +
.../version/DefaultPluginVersionRequest.java | 165 +
.../version/PluginVersionNotFoundException.java | 50 +
.../maven/plugin/version/PluginVersionRequest.java | 115 +
.../version/PluginVersionResolutionException.java | 110 +
.../plugin/version/PluginVersionResolver.java | 42 +
.../maven/plugin/version/PluginVersionResult.java | 47 +
.../internal/DefaultPluginVersionResolver.java | 406 ++
.../internal/DefaultPluginVersionResult.java | 69 +
.../DefaultDependencyResolutionRequest.java | 82 +
.../project/DefaultDependencyResolutionResult.java | 114 +
.../maven/project/DefaultMavenProjectHelper.java | 131 +
.../project/DefaultModelBuildingListener.java | 132 +
.../maven/project/DefaultProjectBuilder.java | 1081 ++++++
.../project/DefaultProjectBuildingHelper.java | 295 ++
.../project/DefaultProjectBuildingRequest.java | 349 ++
.../project/DefaultProjectBuildingResult.java | 110 +
.../DefaultProjectDependenciesResolver.java | 336 ++
.../maven/project/DefaultProjectRealmCache.java | 149 +
.../project/DependencyResolutionException.java | 42 +
.../maven/project/DependencyResolutionRequest.java | 81 +
.../maven/project/DependencyResolutionResult.java | 80 +
.../DuplicateArtifactAttachmentException.java | 64 +
.../maven/project/DuplicateProjectException.java | 80 +
.../apache/maven/project/ExtensionDescriptor.java | 88 +
.../maven/project/ExtensionDescriptorBuilder.java | 151 +
.../project/InvalidProjectVersionException.java | 62 +
.../org/apache/maven/project/MavenProject.java | 1978 ++++++++++
.../apache/maven/project/MavenProjectHelper.java | 76 +
.../org/apache/maven/project/ProjectBuilder.java | 98 +
.../maven/project/ProjectBuildingException.java | 150 +
.../maven/project/ProjectBuildingHelper.java | 81 +
.../maven/project/ProjectBuildingRequest.java | 207 +
.../maven/project/ProjectBuildingResult.java | 74 +
.../maven/project/ProjectDependenciesResolver.java | 40 +
.../apache/maven/project/ProjectModelResolver.java | 298 ++
.../apache/maven/project/ProjectRealmCache.java | 92 +
.../org/apache/maven/project/ProjectSorter.java | 288 ++
.../apache/maven/project/ReactorModelCache.java | 167 +
.../org/apache/maven/project/ReactorModelPool.java | 106 +
.../maven/project/RepositorySessionDecorator.java | 36 +
.../project/artifact/ActiveProjectArtifact.java | 403 ++
.../project/artifact/ArtifactWithDependencies.java | 36 +
.../maven/project/artifact/AttachedArtifact.java | 185 +
.../artifact/DefaultMavenMetadataCache.java | 353 ++
.../project/artifact/DefaultMetadataSource.java | 37 +
.../artifact/DefaultProjectArtifactsCache.java | 248 ++
.../InvalidDependencyVersionException.java | 55 +
.../maven/project/artifact/MavenMetadataCache.java | 41 +
.../project/artifact/MavenMetadataSource.java | 784 ++++
.../maven/project/artifact/PluginArtifact.java | 97 +
.../maven/project/artifact/ProjectArtifact.java | 106 +
.../project/artifact/ProjectArtifactMetadata.java | 130 +
.../project/artifact/ProjectArtifactsCache.java | 103 +
.../apache/maven/project/path/PathTranslator.java | 41 +
.../properties/internal/EnvironmentUtils.java | 70 +
.../properties/internal/SystemProperties.java | 63 +
.../repository/ArtifactDoesNotExistException.java | 37 +
.../maven/repository/ArtifactTransferEvent.java | 339 ++
.../ArtifactTransferFailedException.java | 38 +
.../maven/repository/ArtifactTransferListener.java | 39 +
.../maven/repository/ArtifactTransferResource.java | 66 +
.../DelegatingLocalArtifactRepository.java | 204 +
.../maven/repository/LocalArtifactRepository.java | 36 +
.../LocalRepositoryNotAccessibleException.java | 44 +
.../apache/maven/repository/RepositorySystem.java | 167 +
.../legacy/metadata/AbstractArtifactMetadata.java | 65 +
.../ArtifactMetadataRetrievalException.java | 68 +
.../legacy/metadata/ArtifactMetadataSource.java | 78 +
.../metadata/DefaultMetadataResolutionRequest.java | 132 +
.../legacy/metadata/MetadataResolutionRequest.java | 113 +
.../legacy/metadata/ResolutionGroup.java | 86 +
.../apache/maven/rtinfo/RuntimeInformation.java | 49 +
.../rtinfo/internal/DefaultRuntimeInformation.java | 135 +
.../maven/session/scope/internal/SessionScope.java | 167 +
.../session/scope/internal/SessionScopeModule.java | 66 +
.../settings/DefaultMavenSettingsBuilder.java | 158 +
.../maven/settings/MavenSettingsBuilder.java | 81 +
.../settings/SettingsConfigurationException.java | 63 +
.../org/apache/maven/settings/SettingsUtils.java | 321 ++
.../apache/maven/toolchain/DefaultToolchain.java | 186 +
.../maven/toolchain/DefaultToolchainManager.java | 140 +
.../toolchain/DefaultToolchainManagerPrivate.java | 82 +
.../maven/toolchain/DefaultToolchainsBuilder.java | 71 +
.../toolchain/MisconfiguredToolchainException.java | 39 +
.../apache/maven/toolchain/RequirementMatcher.java | 30 +
.../maven/toolchain/RequirementMatcherFactory.java | 109 +
.../java/org/apache/maven/toolchain/Toolchain.java | 46 +
.../apache/maven/toolchain/ToolchainFactory.java | 44 +
.../apache/maven/toolchain/ToolchainManager.java | 64 +
.../maven/toolchain/ToolchainManagerPrivate.java | 58 +
.../apache/maven/toolchain/ToolchainPrivate.java | 48 +
.../apache/maven/toolchain/ToolchainsBuilder.java | 46 +
.../building/DefaultToolchainsBuilder.java | 212 ++
.../building/DefaultToolchainsBuildingRequest.java | 63 +
.../building/DefaultToolchainsBuildingResult.java | 66 +
.../toolchain/building/ToolchainsBuilder.java | 41 +
.../building/ToolchainsBuildingException.java | 93 +
.../building/ToolchainsBuildingRequest.java | 64 +
.../building/ToolchainsBuildingResult.java | 50 +
.../toolchain/io/DefaultToolchainsReader.java | 96 +
.../toolchain/io/DefaultToolchainsWriter.java | 54 +
.../toolchain/io/ToolchainsParseException.java | 94 +
.../maven/toolchain/io/ToolchainsReader.java | 83 +
.../maven/toolchain/io/ToolchainsWriter.java | 48 +
.../maven/toolchain/java/DefaultJavaToolChain.java | 55 +
.../apache/maven/toolchain/java/JavaToolchain.java | 67 +
.../maven/toolchain/java/JavaToolchainFactory.java | 127 +
.../maven/toolchain/java/JavaToolchainImpl.java | 87 +
.../toolchain/merge/MavenToolchainMerger.java | 103 +
maven-core/src/main/mdo/extension.mdo | 65 +
maven-core/src/main/mdo/toolchains.mdo | 231 ++
.../main/resources/META-INF/maven/extension.xml | 191 +
.../META-INF/plexus/artifact-handlers.xml | 194 +
.../main/resources/META-INF/plexus/components.xml | 134 +
.../resources/META-INF/plexus/default-bindings.xml | 316 ++
.../org/apache/maven/messages/build.properties | 22 +
.../org/apache/maven/project/standalone.xml | 30 +
maven-core/src/site/apt/artifact-handlers.apt | 59 +
.../src/site/apt/configuration-management.apt | 139 +
maven-core/src/site/apt/core-extensions.apt.vm | 30 +
maven-core/src/site/apt/default-bindings.apt.vm | 60 +
.../apt/getting-to-container-configured-mojos.apt | 102 +
maven-core/src/site/apt/index.apt | 80 +
maven-core/src/site/apt/inheritance.apt | 100 +
maven-core/src/site/apt/lifecycles.apt.vm | 49 +
maven-core/src/site/apt/offline-mode.apt | 269 ++
.../src/site/apt/plugin-execution-isolation.apt | 57 +
.../2.1-lifecycle-refactor-class-diagram.png | Bin 0 -> 38152 bytes
.../2.1-lifecycle-refactor-sequence-diagram.png | Bin 0 -> 87383 bytes
.../design/2.1-lifecycle-refactor.graffle | 4024 ++++++++++++++++++++
maven-core/src/site/site.xml | 45 +
.../maven/AbstractCoreMavenComponentTestCase.java | 330 ++
.../java/org/apache/maven/DefaultMavenTest.java | 45 +
.../maven/MavenLifecycleParticipantTest.java | 173 +
.../src/test/java/org/apache/maven/MavenTest.java | 69 +
.../maven/ProjectDependenciesResolverTest.java | 117 +
.../artifact/handler/ArtifactHandlerTest.java | 88 +
.../filter/ExclusionArtifactFilterTest.java | 156 +
.../configuration/DefaultBeanConfiguratorTest.java | 134 +
.../exception/DefaultExceptionHandlerTest.java | 105 +
.../DefaultMavenExecutionRequestPopulatorTest.java | 62 +
.../maven/execution/DefaultMavenExecutionTest.java | 56 +
.../scope/internal/MojoExecutionScopeTest.java | 106 +
.../graph/DefaultProjectDependencyGraphTest.java | 172 +
.../maven/lifecycle/DefaultLifecyclesTest.java | 59 +
.../lifecycle/DelegatingMojoExecutionListener.java | 75 +
.../DelegatingProjectExecutionListener.java | 82 +
.../lifecycle/EmptyLifecyclePluginAnalyzer.java | 77 +
.../lifecycle/LifecycleExecutorSubModulesTest.java | 98 +
.../maven/lifecycle/LifecycleExecutorTest.java | 558 +++
.../maven/lifecycle/MavenExecutionPlanTest.java | 74 +
.../lifecycle/MojoExecutionXPathContainer.java | 72 +
.../internal/BuildListCalculatorTest.java | 49 +
.../lifecycle/internal/BuilderCommonTest.java | 75 +
.../internal/ConcurrencyDependencyGraphTest.java | 94 +
.../internal/LifecycleDependencyResolverTest.java | 82 +
.../LifecycleExecutionPlanCalculatorTest.java | 82 +
.../LifecycleTaskSegmentCalculatorImplTest.java | 57 +
.../lifecycle/internal/PhaseRecorderTest.java | 49 +
.../lifecycle/internal/ProjectBuildListTest.java | 47 +
.../ConcurrencyDependencyGraphTest.java | 83 +
.../multithreaded/ThreadOutputMuxerTest.java | 167 +
.../lifecycle/internal/stub/AboutTheStubs.html | 55 +
.../internal/stub/BuildPluginManagerStub.java | 56 +
.../internal/stub/CompletionServiceStub.java | 89 +
.../internal/stub/DefaultLifecyclesStub.java | 62 +
.../internal/stub/ExecutionEventCatapultStub.java | 42 +
.../internal/stub/LifeCyclePluginAnalyzerStub.java | 74 +
.../stub/LifecycleExecutionPlanCalculatorStub.java | 242 ++
.../stub/LifecycleTaskSegmentCalculatorStub.java | 89 +
.../maven/lifecycle/internal/stub/LoggerStub.java | 110 +
.../lifecycle/internal/stub/MojoExecutorStub.java | 67 +
.../internal/stub/PluginPrefixResolverStub.java | 52 +
.../internal/stub/PluginVersionResolverStub.java | 48 +
.../stub/ProjectDependenciesResolverStub.java | 109 +
.../internal/stub/ProjectDependencyGraphStub.java | 233 ++
.../stub/ProjectDependencyGraphStubTest.java | 61 +
.../lifecycle/mapping/LifecyclePhaseTest.java | 73 +
.../org/apache/maven/plugin/PluginManagerTest.java | 320 ++
.../maven/plugin/PluginParameterExceptionTest.java | 164 +
.../PluginParameterExpressionEvaluatorTest.java | 447 +++
.../plugin/internal/DefaultLegacySupportTest.java | 74 +
.../project/AbstractMavenProjectTestCase.java | 193 +
.../project/DefaultMavenProjectBuilderTest.java | 380 ++
.../maven/project/EmptyLifecycleExecutor.java | 109 +
.../maven/project/EmptyProjectBuildingHelper.java | 62 +
.../project/ExtensionDescriptorBuilderTest.java | 98 +
.../project/LegacyLocalRepositoryManager.java | 192 +
.../org/apache/maven/project/MavenProjectTest.java | 219 ++
.../apache/maven/project/PomConstructionTest.java | 1894 +++++++++
.../apache/maven/project/ProjectBuilderTest.java | 333 ++
.../maven/project/ProjectModelResolverTest.java | 243 ++
.../apache/maven/project/ProjectSorterTest.java | 372 ++
.../apache/maven/project/TestMetadataSource.java | 51 +
.../artifact/DefaultMavenMetadataCacheTest.java | 83 +
.../artifact/DefaultProjectArtifactsCacheTest.java | 72 +
.../project/artifact/MavenMetadataSourceTest.java | 185 +
.../canonical/CanonicalProjectBuilderTest.java | 101 +
.../maven/project/harness/PomTestWrapper.java | 111 +
.../project/harness/Xpp3DomAttributeIterator.java | 89 +
.../project/harness/Xpp3DomAttributePointer.java | 105 +
.../maven/project/harness/Xpp3DomNodeIterator.java | 161 +
.../maven/project/harness/Xpp3DomNodePointer.java | 155 +
.../project/harness/Xpp3DomPointerFactory.java | 61 +
.../maven/repository/LegacyRepositoryLayout.java | 89 +
.../maven/repository/TestArtifactHandler.java | 83 +
.../maven/repository/TestRepositoryConnector.java | 161 +
.../repository/TestRepositoryConnectorFactory.java | 48 +
.../maven/repository/TestRepositorySystem.java | 329 ++
.../internal/DefaultRuntimeInformationTest.java | 81 +
.../settings/PomConstructionWithSettingsTest.java | 158 +
.../apache/maven/settings/SettingsUtilsTest.java | 126 +
.../DefaultToolchainManagerPrivateTest.java | 163 +
.../toolchain/DefaultToolchainManagerTest.java | 153 +
.../maven/toolchain/DefaultToolchainTest.java | 150 +
.../toolchain/RequirementMatcherFactoryTest.java | 72 +
.../building/DefaultToolchainsBuilderTest.java | 283 ++
.../building/ToolchainsBuildingExceptionTest.java | 73 +
.../toolchain/merge/MavenToolchainMergerTest.java | 135 +
.../cyclic-reference/module-a/pom.xml | 19 +
.../cyclic-reference/module-b/pom.xml | 19 +
.../default-maven/cyclic-reference/pom.xml | 14 +
.../lifecycle-dependency-resolver/lib/pom.xml | 32 +
.../projects/lifecycle-dependency-resolver/pom.xml | 58 +
.../lifecycle-dependency-resolver/war/pom.xml | 53 +
.../lifecycle-executor/mojo-configuration/pom.xml | 67 +
.../lifecycle-executor/project-basic/pom.xml | 79 +
.../pom.xml | 72 +
.../java/org/apache/maven/lifecycle/test/App.java | 13 +
.../org/apache/maven/lifecycle/test/AppTest.java | 38 +
.../project-with-inheritance/pom.xml | 628 +++
.../project-with-multiple-executions/pom.xml | 112 +
.../src/main/mdo/remote-resources.mdo | 61 +
.../src/main/mdo/supplemental-model.mdo | 61 +
.../pom.xml | 42 +
.../pom.xml | 30 +
.../module-a/pom.xml | 12 +
.../module-b/pom.xml | 12 +
.../pom.xml | 13 +
.../mng-5003-plugin-realm-cache/pom.xml | 8 +
.../pom.xml | 44 +
.../tools.jar | 0
.../project-with-build-extensions-plugin/pom.xml | 31 +
.../project-with-inheritance/pom.xml | 628 +++
.../project-with-plugin-classpath-ordering/pom.xml | 63 +
.../sub/pom.xml | 77 +
.../org/apache/maven/its/mng3906/a/0.1/a-0.1.jar | Bin 0 -> 5109 bytes
.../org/apache/maven/its/mng3906/a/0.1/a-0.1.pom | 56 +
.../org/apache/maven/its/mng3906/a/0.2/a-0.2.jar | Bin 0 -> 5111 bytes
.../org/apache/maven/its/mng3906/a/0.2/a-0.2.pom | 56 +
.../apache/maven/its/mng3906/a/maven-metadata.xml | 13 +
.../org/apache/maven/its/mng3906/b/0.1/b-0.1.jar | Bin 0 -> 5108 bytes
.../org/apache/maven/its/mng3906/b/0.1/b-0.1.pom | 56 +
.../apache/maven/its/mng3906/b/maven-metadata.xml | 12 +
.../org/apache/maven/its/mng3906/c/0.1/c-0.1.jar | Bin 0 -> 5109 bytes
.../org/apache/maven/its/mng3906/c/0.1/c-0.1.pom | 56 +
.../apache/maven/its/mng3906/c/maven-metadata.xml | 12 +
.../org/apache/maven/its/mng3906/d/0.1/d-0.1.jar | Bin 0 -> 5108 bytes
.../org/apache/maven/its/mng3906/d/0.1/d-0.1.pom | 56 +
.../apache/maven/its/mng3906/d/maven-metadata.xml | 12 +
.../org/apache/maven/its/mng3906/e/0.1/e-0.1.jar | Bin 0 -> 5107 bytes
.../org/apache/maven/its/mng3906/e/0.1/e-0.1.pom | 56 +
.../apache/maven/its/mng3906/e/maven-metadata.xml | 12 +
.../sub/settings-template.xml | 55 +
.../project-builder/MNG-6716/project/pom.xml | 22 +
.../project-builder/MNG-6723/child/pom.xml | 11 +
.../test/projects/project-builder/MNG-6723/pom.xml | 49 +
.../project-builder/it0063/jdk/jre/placeholder.txt | 1 +
.../project-builder/it0063/jdk/lib/tools.jar | Bin 0 -> 345 bytes
.../test/projects/project-builder/it0063/pom.xml | 55 +
.../project-builder/mng-3023/consumer/pom.xml | 66 +
.../mng-3023/dependency/dependency-1.jar | Bin 0 -> 345 bytes
.../project-builder/mng-3023/dependency/pom.xml | 70 +
.../test/projects/project-builder/mng-3023/pom.xml | 37 +
.../it0063/jdk/jre/placeholder.txt | 1 +
.../it0063/jdk/lib/tools.jar | Bin 0 -> 345 bytes
.../project-dependencies-resolver/it0063/pom.xml | 55 +
.../project-with-exclusions/pom.xml | 41 +
.../remote-repo/org/apache/apache/1/apache-1.pom | 82 +
.../org/apache/apache/maven-metadata.xml | 13 +
.../org/apache/maven/its/a/0.1/a-0.1.jar | Bin 0 -> 1898 bytes
.../org/apache/maven/its/a/0.1/a-0.1.pom | 41 +
.../org/apache/maven/its/a/maven-metadata.xml | 12 +
.../org/apache/maven/its/b/0.1/b-0.1.jar | Bin 0 -> 1936 bytes
.../org/apache/maven/its/b/0.1/b-0.1.pom | 49 +
.../org/apache/maven/its/b/maven-metadata.xml | 12 +
.../maven-it-plugin/0.1/maven-it-plugin-0.1.jar | Bin 0 -> 13520 bytes
.../maven-it-plugin/0.1/maven-it-plugin-0.1.pom | 70 +
.../maven/its/plugins/maven-it-plugin/0.1/pom.xml | 70 +
.../its/plugins/maven-it-plugin/maven-metadata.xml | 14 +
.../apache/maven/its/plugins/maven-metadata.xml | 10 +
.../maven-plugin-api/2.0/maven-plugin-api-2.0.jar | Bin 0 -> 10133 bytes
.../maven-plugin-api/2.0/maven-plugin-api-2.0.pom | 23 +
.../org/apache/maven/maven/2.0/maven-2.0.pom | 264 ++
.../0.1/maven-clean-plugin-0.1.jar | Bin 0 -> 6767 bytes
.../0.1/maven-clean-plugin-0.1.pom | 70 +
.../plugins/maven-clean-plugin/maven-metadata.xml | 14 +
.../0.1/maven-compiler-plugin-0.1.jar | Bin 0 -> 8085 bytes
.../0.1/maven-compiler-plugin-0.1.pom | 70 +
.../maven-compiler-plugin/maven-metadata.xml | 14 +
.../0.1/maven-deploy-plugin-0.1.jar | Bin 0 -> 6777 bytes
.../0.1/maven-deploy-plugin-0.1.pom | 70 +
.../plugins/maven-deploy-plugin/maven-metadata.xml | 14 +
.../0.1/maven-install-plugin-0.1.jar | Bin 0 -> 6781 bytes
.../0.1/maven-install-plugin-0.1.pom | 70 +
.../maven-install-plugin/maven-metadata.xml | 14 +
.../maven-jar-plugin/0.1/maven-jar-plugin-0.1.jar | Bin 0 -> 6790 bytes
.../maven-jar-plugin/0.1/maven-jar-plugin-0.1.pom | 70 +
.../plugins/maven-jar-plugin/maven-metadata.xml | 14 +
.../org/apache/maven/plugins/maven-metadata.xml | 45 +
.../0.1/maven-plugin-plugin-0.1.jar | Bin 0 -> 8007 bytes
.../0.1/maven-plugin-plugin-0.1.pom | 70 +
.../plugins/maven-plugin-plugin/maven-metadata.xml | 14 +
.../0.1/maven-resources-plugin-0.1.jar | Bin 0 -> 8034 bytes
.../0.1/maven-resources-plugin-0.1.pom | 70 +
.../maven-resources-plugin/maven-metadata.xml | 14 +
.../0.1/maven-surefire-plugin-0.1.jar | Bin 0 -> 6827 bytes
.../0.1/maven-surefire-plugin-0.1.pom | 70 +
.../maven-surefire-plugin/maven-metadata.xml | 14 +
.../plexus/plexus-utils/1.1/plexus-utils-1.1.jar | Bin 0 -> 168568 bytes
.../plexus/plexus-utils/1.1/plexus-utils-1.1.pom | 27 +
.../artifact-id-inheritance/child/pom.xml | 32 +
.../artifact-id-inheritance/pom.xml | 35 +
.../basedir-aligned-interpolation/pom.xml | 60 +
.../pom-with-unusual-name.xml | 39 +
.../baseuri-interpolation/pom.xml | 38 +
.../boolean-interpolation/pom.xml | 82 +
.../build-extension-inheritance/pom.xml | 49 +
.../build-extension-inheritance/sub/pom.xml | 75 +
.../complete-model/w-parent/pom.xml | 31 +
.../complete-model/w-parent/sub/pom.xml | 319 ++
.../complete-model/wo-parent/pom.xml | 313 ++
.../config-with-plugin-mng/pom.xml | 39 +
.../consecutive_empty_elements/pom.xml | 14 +
.../contributors-inheritance/child-2/pom.xml | 45 +
.../contributors-inheritance/pom.xml | 35 +
.../dependency-inheritance/maven-parent.xml | 31 +
.../dependency-inheritance/pom.xml | 48 +
.../dependency-inheritance/sub/pom.xml | 34 +
.../pom.xml | 19 +
.../sub/pom.xml | 17 +
.../dependency-order/w-plugin-mgmt/pom.xml | 68 +
.../dependency-order/wo-plugin-mgmt/pom.xml | 66 +
.../dependency-scope-inheritance/pom.xml | 16 +
.../dependency-scope-inheritance/sub/pom.xml | 19 +
.../dependency-scope/pom.xml | 18 +
.../dependency-scope/sub/pom.xml | 24 +
.../developers-inheritance/child-2/pom.xml | 45 +
.../developers-inheritance/pom.xml | 35 +
.../distribution-management/pom.xml | 39 +
.../dual-execution-ids/pom.xml | 28 +
.../dual-execution-ids/sub/pom.xml | 43 +
.../nexus-parent.xml | 29 +
.../duplicate-exclusions-dependency/pom.xml | 33 +
.../duplicate-exclusions-dependency/sub/pom.xml | 16 +
.../empty-distMng-repo-url/pom.xml | 15 +
.../resources-project-builder/empty-scm/pom.xml | 58 +
.../equal-plugin-deps/pom.xml | 64 +
.../equal-plugin-exec-ids/pom.xml | 83 +
.../execution-configuration-join/pom.xml | 35 +
.../execution-configuration-subcollections/pom.xml | 42 +
.../execution-configuration/pom.xml | 58 +
.../test/resources-project-builder/foo/sub/pom.xml | 414 ++
.../full-interpolation/pom.xml | 66 +
.../pom.xml | 97 +
.../sub/pom.xml | 84 +
.../active-profile/pom.xml | 50 +
.../active-profile/sub/pom.xml | 54 +
.../no-profile/pom.xml | 41 +
.../no-profile/sub/pom.xml | 45 +
.../interpolation-cli-wins/pom.xml | 39 +
.../jdk-activation/pom.xml | 105 +
.../join-different-containers-same-id/pom.xml | 66 +
.../licenses-inheritance/child-2/pom.xml | 47 +
.../licenses-inheritance/pom.xml | 37 +
.../limited-inheritance/child/pom.xml | 61 +
.../limited-inheritance/pom.xml | 87 +
.../mailing-lists-inheritance/child-2/pom.xml | 45 +
.../mailing-lists-inheritance/pom.xml | 35 +
.../managed-profile-dependency/pom.xml | 55 +
.../managed-profile-dependency/sub/pom.xml | 55 +
.../merged-filter-order/pom.xml | 44 +
.../merged-filter-order/sub/pom.xml | 49 +
.../w-plugin-mgmt/pom.xml | 64 +
.../w-plugin-mgmt/sub/pom.xml | 64 +
.../wo-plugin-mgmt/pom.xml | 62 +
.../wo-plugin-mgmt/sub/pom.xml | 64 +
.../w-plugin-mgmt/pom.xml | 59 +
.../w-plugin-mgmt/sub/pom.xml | 59 +
.../wo-plugin-mgmt/pom.xml | 57 +
.../wo-plugin-mgmt/sub/pom.xml | 59 +
.../merged-plugin-exec-order/w-plugin-mgmt/pom.xml | 71 +
.../w-plugin-mgmt/sub/pom.xml | 71 +
.../wo-plugin-mgmt/pom.xml | 69 +
.../wo-plugin-mgmt/sub/pom.xml | 71 +
.../resources-project-builder/micromailer/pom.xml | 124 +
.../micromailer/spice-parent-9.pom | 103 +
.../multiple-filters/pom.xml | 17 +
.../multiple-repos/pom.xml | 44 +
.../multiple-repos/sub/pom.xml | 45 +
.../nested-build-dir-interpolation/pom.xml | 55 +
.../parent-inheritance/child3.xml | 7 +
.../parent-inheritance/pom.xml | 11 +
.../parent-inheritance/sub/pom.xml | 9 +
.../parent-interpolation/pom.xml | 16 +
.../parent-interpolation/sub/pom.xml | 9 +
.../parent-pom-packaging/pom.xml | 35 +
.../parent-pom-packaging/sub/pom.xml | 40 +
.../platform-file-separator/pom.xml | 40 +
.../plugin-config-append/no-profile/pom.xml | 80 +
.../no-profile/subproject/pom.xml | 70 +
.../plugin-config-append/with-profile/pom.xml | 90 +
.../with-profile/subproject/pom.xml | 80 +
.../plugin-config-attributes/w-plugin-mgmt/pom.xml | 62 +
.../plugin-config-attributes/w-profile/pom.xml | 74 +
.../wo-plugin-mgmt/pom.xml | 53 +
.../plugin-config-merging/child/pom.xml | 76 +
.../plugin-config-merging/pom.xml | 72 +
.../plugin-config-order/w-plugin-mgmt/pom.xml | 68 +
.../plugin-config-order/wo-plugin-mgmt/pom.xml | 60 +
.../plugin-config-properties/pom.xml | 30 +
.../plugin-exec-config-order/w-plugin-mgmt/pom.xml | 78 +
.../wo-plugin-mgmt/pom.xml | 70 +
.../plugin-exec-goals-order/w-plugin-mgmt/pom.xml | 66 +
.../plugin-exec-goals-order/wo-plugin-mgmt/pom.xml | 57 +
.../plugin-exec-inheritance/pom.xml | 75 +
.../plugin-exec-inheritance/w-merge/pom.xml | 48 +
.../plugin-exec-inheritance/wo-merge/pom.xml | 43 +
.../pom.xml | 56 +
.../sub/pom.xml | 59 +
.../plugin-exec-merging-wo-version/pom.xml | 55 +
.../plugin-exec-merging-wo-version/sub/pom.xml | 58 +
.../plugin-exec-merging/w-plugin-mgmt/pom.xml | 58 +
.../plugin-exec-merging/w-plugin-mgmt/sub/pom.xml | 59 +
.../plugin-exec-merging/wo-plugin-mgmt/pom.xml | 56 +
.../plugin-exec-merging/wo-plugin-mgmt/sub/pom.xml | 59 +
.../plugin-exec-order-and-default-exec/pom.xml | 71 +
.../plugin-exec-order-with-lifecycle/pom.xml | 52 +
.../plugin-exec-order/w-plugin-mgmt/pom.xml | 76 +
.../plugin-exec-order/wo-plugin-mgmt/pom.xml | 67 +
.../plugin-exec-w-and-wo-id/w-plugin-mgmt/pom.xml | 72 +
.../plugin-exec-w-and-wo-id/wo-plugin-mgmt/pom.xml | 64 +
.../plugin-inheritance-merge-order/pom.xml | 67 +
.../plugin-inheritance-merge-order/sub/pom.xml | 72 +
.../plugin-inheritance-order/child/pom.xml | 51 +
.../plugin-inheritance-order/pom.xml | 68 +
.../plugin-inheritance-simple/pom.xml | 17 +
.../plugin-inheritance-simple/sub/pom.xml | 20 +
.../plugin-injection-merge-order/pom.xml | 133 +
.../plugin-management-dependencies/pom.xml | 25 +
.../plugin-management-dependencies/sub/pom.xml | 25 +
.../plugin-management-duplicate/pom.xml | 39 +
.../plugin-management-duplicate/sub/pom.xml | 64 +
.../child/pom.xml | 53 +
.../plugin-management-for-implicit-plugin/pom.xml | 61 +
.../plugin-management-inheritance/pom.xml | 64 +
.../plugin-merge-simple/pom.xml | 17 +
.../plugin-order/nexus-parent.xml | 19 +
.../resources-project-builder/plugin-order/pom.xml | 28 +
.../pluginmanagement-inherited/pom.xml | 18 +
.../pluginmanagement-inherited/sub/pom.xml | 17 +
.../pom-encoding/latin-1/pom.xml | 36 +
.../pom-encoding/utf-8/pom.xml | 36 +
.../pom-inheritance/pom.xml | 188 +
.../pom-inheritance/sub/pom.xml | 36 +
.../prerequisites-inheritance/child/pom.xml | 36 +
.../prerequisites-inheritance/pom.xml | 33 +
.../profile-default-deactivation/pom.xml | 35 +
.../profile-dependencies-multiple-profiles/pom.xml | 81 +
.../profile-injected-dependencies/pom.xml | 75 +
.../profile-injection-order/pom.xml | 68 +
.../profile-module-inheritance/pom.xml | 18 +
.../profile-module-inheritance/sub/pom.xml | 12 +
.../profile-module/pom.xml | 24 +
.../profile-plugin-mng-dependencies/pom.xml | 77 +
.../profile-plugin-mng-dependencies/sub/pom.xml | 62 +
.../profile-plugins/pom.xml | 52 +
.../profile-properties-interpolation/pom.xml | 54 +
.../properties-inheritance/pom.xml | 34 +
.../properties-inheritance/sub/pom.xml | 40 +
.../properties-no-duplication/pom.xml | 12 +
.../properties-no-duplication/sub/pom.xml | 17 +
.../repo-inheritance/pom.xml | 64 +
.../reporting-interpolation/pom.xml | 6 +
.../reporting-plugin-config/pom.xml | 51 +
.../reporting-plugin-config/sub/pom.xml | 48 +
.../jetty-parent.xml | 37 +
.../single-configuration-inheritance/pom.xml | 41 +
.../system-property-interpolation/pom.xml | 30 +
.../resources-project-builder/unc-path/pom.xml | 41 +
.../resources-project-builder/unc-path/sub/pom.xml | 57 +
.../dep-mgmt-in-profile/pom.xml | 49 +
.../unique-dependency-key/dep-mgmt/pom.xml | 44 +
.../unique-dependency-key/deps-in-profile/pom.xml | 47 +
.../unique-dependency-key/deps/pom.xml | 42 +
.../artifact-repo-in-profile/pom.xml | 51 +
.../unique-repo-id/artifact-repo/pom.xml | 45 +
.../unique-repo-id/plugin-repo-in-profile/pom.xml | 51 +
.../unique-repo-id/plugin-repo/pom.xml | 45 +
.../child/pom.xml | 104 +
.../unprefixed-expression-interpolation/pom.xml | 36 +
.../url-append/child/pom.xml | 64 +
.../url-append/parent/pom.xml | 53 +
.../url-inheritance/another-parent/pom.xml | 36 +
.../url-inheritance/another-parent/sub/pom.xml | 35 +
.../url-inheritance/pom.xml | 74 +
.../url-inheritance/sub/pom.xml | 35 +
.../url-no-decoding/pom.xml | 64 +
.../xml-coalesce-text/pom.xml | 567 +++
.../xml-markup-interpolation/pom.xml | 41 +
.../xml-whitespace/pom.xml | 43 +
.../xml-whitespace/sub/pom.xml | 49 +
.../test/resources-settings/repositories/pom.xml | 29 +
.../resources-settings/repositories/settings.xml | 55 +
.../resources-settings/settings-no-pom/pom.xml | 13 +
.../settings-no-pom/settings.xml | 20 +
.../test-pom-and-settings-interpolation/pom.xml | 78 +
.../settings.xml | 35 +
.../org.apache.maven/maven-core/pom.properties | 1 +
.../test/resources/META-INF/plexus/components.xml | 113 +
maven-core/src/test/resources/canonical-pom.xml | 55 +
.../test/resources/dependencyManagement-pom.xml | 65 +
.../test/resources/distributionManagement-pom.xml | 44 +
.../t01/maven-test/jars/maven-test-a-1.0.jar | 1 +
.../t01/maven-test/jars/maven-test-a-1.1.jar | 1 +
.../t01/maven-test/jars/maven-test-b-1.0.jar | 1 +
.../t01/maven-test/jars/maven-test-b-1.1.jar | 1 +
.../t01/maven-test/jars/maven-test-c-1.0.jar | 1 +
.../t01/maven-test/jars/maven-test-c-1.1.jar | 1 +
.../t01/maven-test/jars/maven-test-d-1.0.jar | 1 +
.../t01/maven-test/jars/maven-test-d-1.1.jar | 1 +
.../t01/maven-test/jars/maven-test-d-1.2.jar | 1 +
.../t01/maven-test/poms/maven-test-a-1.0.pom | 14 +
.../t01/maven-test/poms/maven-test-a-1.1.pom | 14 +
.../t01/maven-test/poms/maven-test-b-1.0.pom | 7 +
.../t01/maven-test/poms/maven-test-b-1.1.pom | 7 +
.../t01/maven-test/poms/maven-test-c-1.0.pom | 7 +
.../t01/maven-test/poms/maven-test-c-1.1.pom | 7 +
.../t01/maven-test/poms/maven-test-d-1.0.pom | 7 +
.../t01/maven-test/poms/maven-test-d-1.1.pom | 7 +
.../t01/maven-test/poms/maven-test-d-1.2.pom | 7 +
.../test/resources/imports-repo/t01/p0/p1/pom.xml | 45 +
.../test/resources/imports-repo/t01/p0/p2/pom.xml | 56 +
.../test/resources/imports-repo/t01/p0/p3/pom.xml | 59 +
.../test/resources/imports-repo/t01/p0/p4/pom.xml | 67 +
.../src/test/resources/imports-repo/t01/p0/pom.xml | 26 +
.../src/test/resources/local-repo/marker.txt | 1 +
.../maven-test/jars/maven-test-a-1.0.jar | 1 +
.../maven-test/jars/maven-test-b-1.0.jar | 1 +
.../maven-test/jars/maven-test-c-1.0.jar | 1 +
.../maven-test/jars/maven-test-d-1.0.jar | 1 +
.../maven-test/poms/maven-test-a-1.0.pom | 23 +
.../maven-test/poms/maven-test-b-1.0.pom | 23 +
.../maven-test/poms/maven-test-c-1.0.pom | 16 +
.../maven-test/poms/maven-test-d-1.1.pom | 7 +
.../maven-test/poms/maven-test-d-1.2.pom | 7 +
.../jars/maven-snapshot-a-1.0-SNAPSHOT.jar | 1 +
...en-snapshot-a-1.0-SNAPSHOT.jar.snapshot-version | 1 +
.../jars/maven-snapshot-b-1.0-SNAPSHOT.jar | 1 +
...en-snapshot-b-1.0-SNAPSHOT.jar.snapshot-version | 1 +
.../jars/maven-snapshot-e-1.0-SNAPSHOT.jar | 1 +
...en-snapshot-e-1.0-SNAPSHOT.jar.snapshot-version | 1 +
.../poms/maven-test-snapshot-resolving-1.0.pom | 49 +
.../apache/maven/MavenLifecycleParticipantTest.xml | 9 +
.../apache/maven/execution/test-extension-1.jar | Bin 0 -> 4208 bytes
.../junit/junit/3.8.1/junit-3.8.1.jar | Bin 0 -> 121070 bytes
.../junit/junit/3.8.1/junit-3.8.1.jar.md5 | 1 +
.../junit/junit/3.8.1/junit-3.8.1.jar.sha1 | 1 +
.../junit/junit/3.8.1/junit-3.8.1.pom | 29 +
.../junit/junit/3.8.1/junit-3.8.1.pom.md5 | 1 +
.../junit/junit/3.8.1/junit-3.8.1.pom.sha1 | 1 +
.../org/apache/apache/3/apache-3.pom | 82 +
.../org/apache/apache/3/apache-3.pom.md5 | 1 +
.../org/apache/apache/3/apache-3.pom.sha1 | 1 +
.../3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar | Bin 0 -> 163984 bytes
.../maven-artifact-3.0-SNAPSHOT.jar.md5 | 1 +
.../maven-artifact-3.0-SNAPSHOT.jar.sha1 | 1 +
.../3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom | 112 +
.../maven-artifact-3.0-SNAPSHOT.pom.md5 | 1 +
.../maven-artifact-3.0-SNAPSHOT.pom.sha1 | 1 +
.../test/test-extension/1/test-extension-1.jar | Bin 0 -> 4208 bytes
.../test/test-extension/1/test-extension-1.pom | 73 +
.../test/test-extension/1/test-extension-1.pom.md5 | 1 +
.../test-extension/1/test-extension-1.pom.sha1 | 1 +
.../1/test-lifecycle-and-artifactHandler-1.jar | Bin 0 -> 2582 bytes
.../1/test-lifecycle-and-artifactHandler-1.pom | 44 +
.../1/test-lifecycle-and-artifactHandler-1.pom.md5 | 1 +
.../test-lifecycle-and-artifactHandler-1.pom.sha1 | 1 +
.../apache/maven/maven-parent/4/maven-parent-4.pom | 304 ++
.../maven/maven-parent/4/maven-parent-4.pom.md5 | 1 +
.../maven/maven-parent/4/maven-parent-4.pom.sha1 | 1 +
.../apache/maven/maven-parent/5/maven-parent-5.pom | 466 +++
.../maven/maven-parent/5/maven-parent-5.pom.md5 | 1 +
.../maven/maven-parent/5/maven-parent-5.pom.sha1 | 1 +
.../1.0-beta-2/wagon-provider-api-1.0-beta-2.jar | Bin 0 -> 46326 bytes
.../wagon-provider-api-1.0-beta-2.jar.md5 | 1 +
.../wagon-provider-api-1.0-beta-2.jar.sha1 | 1 +
.../1.0-beta-2/wagon-provider-api-1.0-beta-2.pom | 21 +
.../wagon-provider-api-1.0-beta-2.pom.md5 | 1 +
.../wagon-provider-api-1.0-beta-2.pom.sha1 | 1 +
.../wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom | 170 +
.../wagon/1.0-beta-2/wagon-1.0-beta-2.pom.md5 | 1 +
.../wagon/1.0-beta-2/wagon-1.0-beta-2.pom.sha1 | 1 +
.../plexus-active-collections-1.0-beta-1.jar | Bin 0 -> 15961 bytes
.../plexus-active-collections-1.0-beta-1.jar.md5 | 1 +
.../plexus-active-collections-1.0-beta-1.jar.sha1 | 1 +
.../plexus-active-collections-1.0-beta-1.pom | 51 +
.../plexus-active-collections-1.0-beta-1.pom.md5 | 1 +
.../plexus-active-collections-1.0-beta-1.pom.sha1 | 1 +
.../plexus-classworlds-1.2-alpha-10.jar | Bin 0 -> 42472 bytes
.../plexus-classworlds-1.2-alpha-10.jar.md5 | 1 +
.../plexus-classworlds-1.2-alpha-10.jar.sha1 | 1 +
.../plexus-classworlds-1.2-alpha-10.pom | 94 +
.../plexus-classworlds-1.2-alpha-10.pom.md5 | 1 +
.../plexus-classworlds-1.2-alpha-10.pom.sha1 | 1 +
.../1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar | Bin 0 -> 42636 bytes
.../plexus-classworlds-1.2-alpha-7.jar.md5 | 1 +
.../plexus-classworlds-1.2-alpha-7.jar.sha1 | 1 +
.../1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom | 78 +
.../plexus-classworlds-1.2-alpha-7.pom.md5 | 1 +
.../plexus-classworlds-1.2-alpha-7.pom.sha1 | 1 +
.../plexus-component-api-1.0-alpha-16.jar | Bin 0 -> 33149 bytes
.../plexus-component-api-1.0-alpha-16.jar.md5 | 1 +
.../plexus-component-api-1.0-alpha-16.jar.sha1 | 1 +
.../plexus-component-api-1.0-alpha-16.pom | 63 +
.../plexus-component-api-1.0-alpha-16.pom.md5 | 1 +
.../plexus-component-api-1.0-alpha-16.pom.sha1 | 1 +
.../plexus-component-api-1.0-alpha-32.jar | Bin 0 -> 36108 bytes
.../plexus-component-api-1.0-alpha-32.jar.md5 | 1 +
.../plexus-component-api-1.0-alpha-32.jar.sha1 | 1 +
.../plexus-component-api-1.0-alpha-32.pom | 61 +
.../plexus-component-api-1.0-alpha-32.pom.md5 | 1 +
.../plexus-component-api-1.0-alpha-32.pom.sha1 | 1 +
.../1.1.6/plexus-components-1.1.6.pom | 60 +
.../1.1.6/plexus-components-1.1.6.pom.md5 | 1 +
.../1.1.6/plexus-components-1.1.6.pom.sha1 | 1 +
.../plexus-container-default-1.0-alpha-16.jar | Bin 0 -> 210679 bytes
.../plexus-container-default-1.0-alpha-16.jar.md5 | 1 +
.../plexus-container-default-1.0-alpha-16.jar.sha1 | 1 +
.../plexus-container-default-1.0-alpha-16.pom | 56 +
.../plexus-container-default-1.0-alpha-16.pom.md5 | 1 +
.../plexus-container-default-1.0-alpha-16.pom.sha1 | 1 +
.../plexus-container-default-1.0-alpha-32.jar | Bin 0 -> 238880 bytes
.../plexus-container-default-1.0-alpha-32.jar.md5 | 1 +
.../plexus-container-default-1.0-alpha-32.jar.sha1 | 1 +
.../plexus-container-default-1.0-alpha-32.pom | 98 +
.../plexus-container-default-1.0-alpha-32.pom.md5 | 1 +
.../plexus-container-default-1.0-alpha-32.pom.sha1 | 1 +
.../plexus-containers-1.0-alpha-16.pom | 49 +
.../plexus-containers-1.0-alpha-16.pom.md5 | 1 +
.../plexus-containers-1.0-alpha-16.pom.sha1 | 1 +
.../plexus-containers-1.0-alpha-32.pom | 49 +
.../plexus-containers-1.0-alpha-32.pom.md5 | 1 +
.../plexus-containers-1.0-alpha-32.pom.sha1 | 1 +
.../plexus/plexus-utils/1.1/plexus-utils-1.1.jar | Bin 0 -> 168568 bytes
.../plexus-utils/1.1/plexus-utils-1.1.jar.md5 | 1 +
.../plexus-utils/1.1/plexus-utils-1.1.jar.sha1 | 1 +
.../plexus/plexus-utils/1.1/plexus-utils-1.1.pom | 27 +
.../plexus-utils/1.1/plexus-utils-1.1.pom.md5 | 1 +
.../plexus-utils/1.1/plexus-utils-1.1.pom.sha1 | 1 +
.../plexus-utils/1.4.5/plexus-utils-1.4.5.jar | Bin 0 -> 205043 bytes
.../plexus-utils/1.4.5/plexus-utils-1.4.5.jar.md5 | 1 +
.../plexus-utils/1.4.5/plexus-utils-1.4.5.jar.sha1 | 1 +
.../plexus-utils/1.4.5/plexus-utils-1.4.5.pom | 61 +
.../plexus-utils/1.4.5/plexus-utils-1.4.5.pom.md5 | 1 +
.../plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1 | 1 +
.../plexus/plexus/1.0.10/plexus-1.0.10.pom | 273 ++
.../plexus/plexus/1.0.10/plexus-1.0.10.pom.md5 | 1 +
.../plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1 | 1 +
.../plexus/plexus/1.0.11/plexus-1.0.11.pom | 308 ++
.../plexus/plexus/1.0.11/plexus-1.0.11.pom.md5 | 1 +
.../plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1 | 1 +
.../codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom | 205 +
.../plexus/plexus/1.0.4/plexus-1.0.4.pom.md5 | 1 +
.../plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1 | 1 +
.../codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom | 259 ++
.../plexus/plexus/1.0.8/plexus-1.0.8.pom.md5 | 1 +
.../plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1 | 1 +
.../codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom | 257 ++
.../plexus/plexus/1.0.9/plexus-1.0.9.pom.md5 | 1 +
.../plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1 | 1 +
.../extension/test-extension-repo/repo-marker.txt | 1 +
.../maven/lifecycle/LifecycleExecutorTest.xml | 9 +
.../resources/org/apache/maven/lifecycle/pom.xml | 628 +++
.../org/apache/maven/plugin/PluginManagerTest.xml | 9 +
.../maven/project/AbstractMavenProjectTestCase.xml | 9 +
.../apache/maven/project/PomConstructionTest.xml | 13 +
.../maven/project/workspace/buildFromFile/pom.xml | 8 +
.../tests/project-caching/1/project-caching-1.pom | 8 +
.../tests/project-caching/maven-metadata-local.xml | 11 +
.../project/workspace/buildModelLineage/pom.xml | 7 +
.../resolveParentPom/childAndParent/child/pom.xml | 10 +
.../resolveParentPom/childAndParent/pom.xml | 7 +
.../project/workspace/resolveParentPom/pom.xml | 10 +
.../settings/PomConstructionWithSettingsTest.xml | 9 +
.../org/apache/maven/toolchain/global.xml | 35 +
.../toolchain/model/toolchains-jdks-extend.xml | 45 +
.../toolchain/model/toolchains-jdks-extra.xml | 45 +
.../maven/toolchain/model/toolchains-jdks.xml | 43 +
.../resources/org/apache/maven/toolchain/user.xml | 35 +
.../plexus/plexus-utils/1.1/plexus-utils-1.1.jar | Bin 0 -> 168568 bytes
.../plexus-utils/1.1/plexus-utils-1.1.jar.sha1 | 1 +
.../plexus/plexus-utils/1.1/plexus-utils-1.1.pom | 27 +
.../plexus-utils/1.1/plexus-utils-1.1.pom.sha1 | 1 +
maven-core/src/test/resources/pom.xml | 52 +
.../project-dynamism/plugin-level-dep.pom.xml | 24 +
.../test/resources/project-dynamism/pom-interp.xml | 28 +
.../resources/project-dynamism/pom-relative.xml | 36 +
.../src/test/resources/project-dynamism/pom.xml | 36 +
.../resources/projects/artifactMissingVersion.xml | 34 +
.../src/test/resources/projects/bad-dependency.xml | 27 +
.../src/test/resources/projects/bad-project.xml | 20 +
maven-core/src/test/resources/projects/badPom.xml | 8 +
...oject-which-needs-directory-alignment-child.xml | 33 +
.../project-which-needs-directory-alignment.xml | 135 +
...oject-which-needs-directory-alignment-child.xml | 29 +
.../projects/basic-resolveDependencies.xml | 15 +
.../projects/build-path-expression-pom.xml | 14 +
.../src/test/resources/projects/build.properties | 18 +
.../child-which-inherits-from-super-model.xml | 28 +
.../resources/projects/child-with-bogus-parent.xml | 29 +
maven-core/src/test/resources/projects/child.xml | 33 +
.../projects/duplicate-plugins-merged-pom.xml | 48 +
.../resources/projects/fully-populated-child.xml | 168 +
.../projects/future-model-version-pom.xml | 25 +
.../projects/future-schema-model-version-pom.xml | 24 +
.../grandchild-check/child/grandchild/pom.xml | 10 +
.../projects/grandchild-check/child/pom.xml | 13 +
.../resources/projects/grandchild-check/pom.xml | 7 +
...pom-resolves-from-property-based-repository.xml | 31 +
.../projects/modelsource/module01/pom.xml | 12 +
.../test/resources/projects/modelsource/pom.xml | 13 +
.../pom.xml | 12 +
.../pom.xml | 11 +
.../parent-version-range-external-valid/pom.xml | 11 +
.../child/pom.xml | 12 +
.../pom.xml | 7 +
.../child/pom.xml | 11 +
.../pom.xml | 7 +
.../parent-version-range-local-valid/child/pom.xml | 11 +
.../parent-version-range-local-valid/pom.xml | 7 +
.../resources/projects/past-model-version-pom.xml | 26 +
maven-core/src/test/resources/projects/project.xml | 162 +
.../projects/versionless-managed-dependency.xml | 24 +
.../maven-test/jars/maven-test-b-1.0.jar | Bin 0 -> 18874 bytes
.../maven-test/jars/maven-test-b-1.0.jar.md5 | 1 +
.../maven-test/poms/maven-test-b-1.0.pom | 21 +
.../jars/maven-snapshot-a-1.0-SNAPSHOT.jar | 1 +
...en-snapshot-a-1.0-SNAPSHOT.jar.snapshot-version | 1 +
.../jars/maven-snapshot-b-1.0-SNAPSHOT.jar | 1 +
...en-snapshot-b-1.0-SNAPSHOT.jar.snapshot-version | 1 +
.../jars/maven-snapshot-c-1.0-SNAPSHOT.jar | 1 +
...en-snapshot-c-1.0-SNAPSHOT.jar.snapshot-version | 1 +
.../maven-test/jars/maven-test-z-1.0.jar | 1 +
.../resources/withActiveByDefaultProfile-pom.xml | 40 +
maven-embedder/pom.xml | 194 +
maven-embedder/src/examples/simple-project/pom.xml | 39 +
.../src/examples/simple-project/settings.xml | 26 +
.../main/java/org/apache/maven/embedder/App.java | 28 +
.../java/org/apache/maven/embedder/AppTest.java | 53 +
.../main/java/org/apache/maven/cli/CLIManager.java | 181 +
.../org/apache/maven/cli/CLIReportingUtils.java | 196 +
.../java/org/apache/maven/cli/CleanArgument.java | 125 +
.../main/java/org/apache/maven/cli/CliRequest.java | 123 +
.../main/java/org/apache/maven/cli/MavenCli.java | 1746 +++++++++
.../java/org/apache/maven/cli/ResolveFile.java | 50 +
.../cli/configuration/ConfigurationProcessor.java | 31 +
.../SettingsXmlConfigurationProcessor.java | 277 ++
.../maven/cli/event/DefaultEventSpyContext.java | 41 +
.../maven/cli/event/ExecutionEventLogger.java | 488 +++
.../internal/BootstrapCoreExtensionManager.java | 146 +
.../maven/cli/logging/BaseSlf4jConfiguration.java | 45 +
.../maven/cli/logging/Slf4jConfiguration.java | 50 +
.../cli/logging/Slf4jConfigurationFactory.java | 79 +
.../org/apache/maven/cli/logging/Slf4jLogger.java | 145 +
.../maven/cli/logging/Slf4jLoggerManager.java | 111 +
.../maven/cli/logging/Slf4jStdoutLogger.java | 306 ++
.../cli/logging/impl/Log4j2Configuration.java | 59 +
.../cli/logging/impl/LogbackConfiguration.java | 61 +
.../cli/logging/impl/Slf4jSimpleConfiguration.java | 63 +
.../impl/UnsupportedSlf4jBindingConfiguration.java | 72 +
.../transfer/AbstractMavenTransferListener.java | 272 ++
.../transfer/BatchModeMavenTransferListener.java | 35 +
.../cli/transfer/ConsoleMavenTransferListener.java | 169 +
.../cli/transfer/QuietMavenTransferListener.java | 31 +
.../cli/transfer/Slf4jMavenTransferListener.java | 103 +
.../src/main/java/org/slf4j/MavenSlf4jFriend.java | 35 +
.../org/slf4j/impl/MavenSlf4jSimpleFriend.java | 40 +
maven-embedder/src/main/mdo/core-extensions.mdo | 88 +
.../META-INF/maven/slf4j-configuration.properties | 23 +
maven-embedder/src/site/apt/cli.apt.vm | 28 +
maven-embedder/src/site/apt/index.apt.vm | 49 +
maven-embedder/src/site/apt/logging.apt | 92 +
maven-embedder/src/site/site.xml | 42 +
.../maven/cli/CLIManagerDocumentationTest.java | 108 +
.../java/org/apache/maven/cli/CLIManagerTest.java | 50 +
.../apache/maven/cli/CLIReportingUtilsTest.java | 40 +
.../org/apache/maven/cli/CleanArgumentTest.java | 61 +
.../java/org/apache/maven/cli/MavenCliTest.java | 334 ++
.../maven/cli/event/ExecutionEventLoggerTest.java | 106 +
.../maven/cli/transfer/FileSizeFormatTest.java | 302 ++
.../test/projects/config-illegal/.mvn/maven.config | 1 +
.../src/test/projects/config/.mvn/maven.config | 2 +
.../mavenConfigProperties/.mvn/maven.config | 3 +
maven-metrics/pom.xml | 44 +
.../java/org/apache/maven/metrics/Counter.java | 54 +
.../main/java/org/apache/maven/metrics/Gauge.java | 38 +
.../org/apache/maven/metrics/MetricsContext.java | 92 +
.../org/apache/maven/metrics/MetricsProvider.java | 83 +
.../metrics/MetricsProviderLifeCycleException.java | 51 +
.../java/org/apache/maven/metrics/Summary.java | 37 +
.../java/org/apache/maven/metrics/SummarySet.java | 39 +
.../maven/metrics/impl/NullMetricsProvider.java | 160 +
maven-model-builder/pom.xml | 103 +
.../building/AbstractModelBuildingListener.java | 37 +
.../maven/model/building/ArtifactModelSource.java | 59 +
.../maven/model/building/DefaultModelBuilder.java | 1519 ++++++++
.../model/building/DefaultModelBuilderFactory.java | 243 ++
.../model/building/DefaultModelBuildingEvent.java | 64 +
.../building/DefaultModelBuildingRequest.java | 411 ++
.../model/building/DefaultModelBuildingResult.java | 175 +
.../maven/model/building/DefaultModelProblem.java | 176 +
.../building/DefaultModelProblemCollector.java | 200 +
.../model/building/DefaultModelProcessor.java | 114 +
.../maven/model/building/FileModelSource.java | 111 +
.../model/building/FilterModelBuildingRequest.java | 285 ++
.../apache/maven/model/building/ModelBuilder.java | 63 +
.../maven/model/building/ModelBuildingEvent.java | 53 +
.../model/building/ModelBuildingEventCatapult.java | 41 +
.../model/building/ModelBuildingException.java | 180 +
.../model/building/ModelBuildingListener.java | 40 +
.../maven/model/building/ModelBuildingRequest.java | 338 ++
.../maven/model/building/ModelBuildingResult.java | 99 +
.../apache/maven/model/building/ModelCache.java | 85 +
.../apache/maven/model/building/ModelCacheTag.java | 158 +
.../org/apache/maven/model/building/ModelData.java | 222 ++
.../apache/maven/model/building/ModelProblem.java | 120 +
.../model/building/ModelProblemCollector.java | 41 +
.../model/building/ModelProblemCollectorExt.java | 37 +
.../building/ModelProblemCollectorRequest.java | 95 +
.../maven/model/building/ModelProblemUtils.java | 175 +
.../maven/model/building/ModelProcessor.java | 35 +
.../apache/maven/model/building/ModelSource.java | 38 +
.../apache/maven/model/building/ModelSource2.java | 56 +
.../org/apache/maven/model/building/Result.java | 265 ++
.../maven/model/building/StringModelSource.java | 56 +
.../maven/model/building/UrlModelSource.java | 46 +
.../DefaultDependencyManagementImporter.java | 86 +
.../composition/DependencyManagementImporter.java | 48 +
.../inheritance/DefaultInheritanceAssembler.java | 363 ++
.../model/inheritance/InheritanceAssembler.java | 48 +
.../AbstractStringBasedModelInterpolator.java | 215 ++
.../interpolation/BuildTimestampValueSource.java | 47 +
.../model/interpolation/MavenBuildTimestamp.java | 77 +
.../model/interpolation/ModelInterpolator.java | 52 +
.../PathTranslatingPostProcessor.java | 67 +
.../interpolation/ProblemDetectingValueSource.java | 86 +
.../StringSearchModelInterpolator.java | 516 +++
.../StringVisitorModelInterpolator.java | 1455 +++++++
.../interpolation/UrlNormalizingPostProcessor.java | 69 +
.../apache/maven/model/io/DefaultModelReader.java | 121 +
.../apache/maven/model/io/DefaultModelWriter.java | 93 +
.../apache/maven/model/io/ModelParseException.java | 93 +
.../org/apache/maven/model/io/ModelReader.java | 89 +
.../org/apache/maven/model/io/ModelWriter.java | 74 +
.../maven/model/locator/DefaultModelLocator.java | 44 +
.../apache/maven/model/locator/ModelLocator.java | 44 +
.../DefaultDependencyManagementInjector.java | 117 +
.../DefaultPluginManagementInjector.java | 144 +
.../management/DependencyManagementInjector.java | 44 +
.../model/management/PluginManagementInjector.java | 44 +
.../apache/maven/model/merge/MavenModelMerger.java | 699 ++++
.../normalization/DefaultModelNormalizer.java | 141 +
.../maven/model/normalization/ModelNormalizer.java | 54 +
.../model/path/DefaultModelPathTranslator.java | 114 +
.../model/path/DefaultModelUrlNormalizer.java | 87 +
.../maven/model/path/DefaultPathTranslator.java | 68 +
.../maven/model/path/DefaultUrlNormalizer.java | 75 +
.../maven/model/path/ModelPathTranslator.java | 45 +
.../maven/model/path/ModelUrlNormalizer.java | 42 +
.../apache/maven/model/path/PathTranslator.java | 43 +
.../org/apache/maven/model/path/UrlNormalizer.java | 39 +
.../plugin/DefaultPluginConfigurationExpander.java | 86 +
.../plugin/DefaultReportConfigurationExpander.java | 68 +
.../model/plugin/DefaultReportingConverter.java | 274 ++
.../model/plugin/LifecycleBindingsInjector.java | 46 +
.../model/plugin/PluginConfigurationExpander.java | 43 +
.../model/plugin/ReportConfigurationExpander.java | 43 +
.../maven/model/plugin/ReportingConverter.java | 44 +
.../profile/DefaultProfileActivationContext.java | 259 ++
.../model/profile/DefaultProfileInjector.java | 256 ++
.../model/profile/DefaultProfileSelector.java | 146 +
.../model/profile/ProfileActivationContext.java | 79 +
.../maven/model/profile/ProfileInjector.java | 46 +
.../maven/model/profile/ProfileSelector.java | 49 +
.../profile/activation/FileProfileActivator.java | 195 +
.../activation/JdkVersionProfileActivator.java | 227 ++
.../OperatingSystemProfileActivator.java | 171 +
.../model/profile/activation/ProfileActivator.java | 59 +
.../activation/PropertyProfileActivator.java | 129 +
.../resolution/InvalidRepositoryException.java | 73 +
.../maven/model/resolution/ModelResolver.java | 125 +
.../resolution/UnresolvableModelException.java | 126 +
.../model/resolution/WorkspaceModelResolver.java | 36 +
.../model/superpom/DefaultSuperPomProvider.java | 99 +
.../maven/model/superpom/SuperPomProvider.java | 42 +
.../model/validation/DefaultModelValidator.java | 1364 +++++++
.../maven/model/validation/ModelValidator.java | 54 +
.../resources/org/apache/maven/model/pom-4.0.0.xml | 150 +
maven-model-builder/src/site/apt/index.apt | 217 ++
maven-model-builder/src/site/apt/super-pom.apt.vm | 30 +
maven-model-builder/src/site/site.xml | 42 +
.../model/building/ComplexActivationTest.java | 60 +
.../building/DefaultModelBuilderFactoryTest.java | 59 +
.../maven/model/building/FileModelSourceTest.java | 75 +
.../model/building/SimpleProblemCollector.java | 89 +
.../DefaultInheritanceAssemblerTest.java | 237 ++
.../AbstractModelInterpolatorTest.java | 505 +++
.../interpolation/MavenBuildTimestampTest.java | 38 +
.../StringSearchModelInterpolatorTest.java | 611 +++
.../maven/model/merge/MavenModelMergerTest.java | 101 +
.../maven/model/path/DefaultUrlNormalizerTest.java | 90 +
.../activation/AbstractProfileActivatorTest.java | 85 +
.../activation/JdkVersionProfileActivatorTest.java | 185 +
.../activation/PropertyProfileActivatorTest.java | 185 +
.../validation/DefaultModelValidatorTest.java | 817 ++++
.../src/test/resources/poms/factory/complex.xml | 49 +
.../src/test/resources/poms/factory/simple.xml | 81 +
.../poms/inheritance/empty-urls-child.xml | 31 +
.../poms/inheritance/empty-urls-expected.xml | 44 +
.../poms/inheritance/empty-urls-parent.xml | 42 +
.../resources/poms/inheritance/flat-urls-child.xml | 34 +
.../poms/inheritance/flat-urls-expected.xml | 50 +
.../poms/inheritance/flat-urls-parent.xml | 49 +
.../module-path-not-artifactId-child.xml | 43 +
.../module-path-not-artifactId-expected.xml | 58 +
.../module-path-not-artifactId-parent.xml | 48 +
.../poms/inheritance/no-append-urls-child.xml | 34 +
.../poms/inheritance/no-append-urls-expected.xml | 53 +
.../poms/inheritance/no-append-urls-parent.xml | 52 +
.../poms/inheritance/no-append-urls2-child.xml | 43 +
.../poms/inheritance/no-append-urls2-expected.xml | 50 +
.../poms/inheritance/no-append-urls2-parent.xml | 45 +
.../poms/inheritance/no-append-urls3-child.xml | 41 +
.../poms/inheritance/no-append-urls3-expected.xml | 50 +
.../poms/inheritance/no-append-urls3-parent.xml | 45 +
.../inheritance/plugin-configuration-child.xml | 61 +
.../inheritance/plugin-configuration-expected.xml | 87 +
.../inheritance/plugin-configuration-parent.xml | 89 +
.../tricky-flat-artifactId-urls-child.xml | 34 +
.../tricky-flat-artifactId-urls-expected.xml | 50 +
.../tricky-flat-artifactId-urls-parent.xml | 49 +
.../tricky-flat-directory-urls-child.xml | 34 +
.../tricky-flat-directory-urls-expected.xml | 50 +
.../tricky-flat-directory-urls-parent.xml | 49 +
.../test/resources/poms/inheritance/urls-child.xml | 34 +
.../resources/poms/inheritance/urls-expected.xml | 50 +
.../resources/poms/inheritance/urls-parent.xml | 49 +
.../validation/bad-dependency-exclusion-id.xml | 40 +
.../validation/bad-dependency-management-scope.xml | 72 +
.../poms/validation/bad-dependency-scope.xml | 69 +
.../poms/validation/bad-dependency-version.xml | 43 +
.../validation/bad-import-scope-classifier.xml | 38 +
.../poms/validation/bad-import-scope-type.xml | 37 +
.../resources/poms/validation/bad-modelVersion.xml | 25 +
.../validation/bad-plugin-dependency-scope.xml | 70 +
.../validation/bad-plugin-dependency-version.xml | 46 +
.../poms/validation/bad-plugin-version.xml | 55 +
.../poms/validation/bad-repository-id.xml | 50 +
.../poms/validation/bad-snapshot-version.xml | 25 +
.../test/resources/poms/validation/bad-version.xml | 25 +
.../poms/validation/basedir-system-path.xml | 42 +
...-dependency-metaversions-latest-and-release.xml | 38 +
.../validation/distribution-management-status.xml | 29 +
.../resources/poms/validation/duplicate-module.xml | 31 +
.../poms/validation/duplicate-plugin-execution.xml | 103 +
.../resources/poms/validation/duplicate-plugin.xml | 81 +
.../poms/validation/duplicate-profile-id.xml | 35 +
.../resources/poms/validation/empty-module.xml | 30 +
.../poms/validation/empty-plugin-version.xml | 34 +
.../poms/validation/hard-coded-system-path.xml | 42 +
.../poms/validation/incomplete-parent.xml | 30 +
.../invalid-aggregator-packaging-pom.xml | 30 +
.../resources/poms/validation/invalid-ids-pom.xml | 26 +
.../resources/poms/validation/missing-1-pom.xml | 21 +
.../poms/validation/missing-artifactId-pom.xml | 25 +
.../missing-dependency-artifactId-pom.xml | 32 +
.../validation/missing-dependency-exclusion-id.xml | 39 +
.../validation/missing-dependency-groupId-pom.xml | 32 +
.../missing-dependency-mgmt-artifactId-pom.xml | 34 +
.../missing-dependency-mgmt-groupId-pom.xml | 34 +
.../missing-dependency-mgmt-version-pom.xml | 34 +
.../validation/missing-dependency-version-pom.xml | 32 +
.../poms/validation/missing-groupId-pom.xml | 25 +
.../poms/validation/missing-modelVersion-pom.xml | 25 +
.../validation/missing-plugin-artifactId-pom.xml | 33 +
.../missing-plugin-dependency-artifactId.xml | 41 +
.../missing-plugin-dependency-groupId.xml | 41 +
.../missing-plugin-dependency-version.xml | 41 +
.../poms/validation/missing-plugin-version-pom.xml | 33 +
.../validation/missing-report-artifactId-pom.xml | 33 +
.../poms/validation/missing-report-version-pom.xml | 57 +
.../poms/validation/missing-repository-id-pom.xml | 36 +
.../validation/missing-resource-directory-pom.xml | 38 +
.../resources/poms/validation/missing-type-pom.xml | 26 +
.../poms/validation/missing-version-pom.xml | 25 +
.../raw-model/bad-ci-friendly-sha1plus.xml | 31 +
.../raw-model/bad-ci-friendly-sha1plus2.xml | 31 +
.../poms/validation/raw-model/bad-ci-friendly.xml | 31 +
.../raw-model/bad-parent-version-latest.xml | 37 +
.../raw-model/bad-parent-version-release.xml | 37 +
.../missing-artifactId-pluginManagement.xml | 39 +
.../raw-model/missing-ga-pluginManagement.xml | 39 +
.../raw-model/missing-groupId-pluginManagement.xml | 39 +
.../missing-plugin-version-pluginManagement.xml | 40 +
.../raw-model/ok-ci-friendly-all-expressions.xml | 31 +
.../raw-model/ok-ci-friendly-changelist.xml | 31 +
.../raw-model/ok-ci-friendly-revision.xml | 31 +
.../validation/raw-model/ok-ci-friendly-sha1.xml | 31 +
.../raw-model/self-referencing-classifier.xml | 39 +
.../poms/validation/raw-model/self-referencing.xml | 38 +
.../poms/validation/reserved-repository-id.xml | 50 +
maven-model/pom.xml | 79 +
.../apache/maven/model/io/xpp3/package-info.java | 30 +
.../org/apache/maven/model/merge/ModelMerger.java | 2795 ++++++++++++++
.../org/apache/maven/model/merge/package-info.java | 24 +
.../java/org/apache/maven/model/package-info.java | 25 +
maven-model/src/main/mdo/maven.mdo | 3164 +++++++++++++++
maven-model/src/site/apt/index.apt | 39 +
maven-model/src/site/site.xml | 38 +
.../org/apache/maven/model/ActivationFileTest.java | 56 +
.../org/apache/maven/model/ActivationOSTest.java | 56 +
.../apache/maven/model/ActivationPropertyTest.java | 56 +
.../org/apache/maven/model/ActivationTest.java | 56 +
.../java/org/apache/maven/model/BuildTest.java | 56 +
.../org/apache/maven/model/CiManagementTest.java | 56 +
.../org/apache/maven/model/ContributorTest.java | 56 +
.../maven/model/DependencyManagementTest.java | 56 +
.../org/apache/maven/model/DependencyTest.java | 56 +
.../maven/model/DeploymentRepositoryTest.java | 56 +
.../java/org/apache/maven/model/DeveloperTest.java | 56 +
.../maven/model/DistributionManagementTest.java | 56 +
.../java/org/apache/maven/model/ExclusionTest.java | 56 +
.../java/org/apache/maven/model/ExtensionTest.java | 56 +
.../apache/maven/model/IssueManagementTest.java | 56 +
.../java/org/apache/maven/model/LicenseTest.java | 56 +
.../org/apache/maven/model/MailingListTest.java | 56 +
.../java/org/apache/maven/model/ModelTest.java | 56 +
.../java/org/apache/maven/model/NotifierTest.java | 56 +
.../org/apache/maven/model/OrganizationTest.java | 56 +
.../java/org/apache/maven/model/ParentTest.java | 56 +
.../maven/model/PluginConfigurationTest.java | 56 +
.../apache/maven/model/PluginContainerTest.java | 56 +
.../apache/maven/model/PluginExecutionTest.java | 56 +
.../apache/maven/model/PluginManagementTest.java | 56 +
.../java/org/apache/maven/model/PluginTest.java | 56 +
.../org/apache/maven/model/PrerequisitesTest.java | 56 +
.../java/org/apache/maven/model/ProfileTest.java | 56 +
.../org/apache/maven/model/RelocationTest.java | 56 +
.../org/apache/maven/model/ReportPluginTest.java | 56 +
.../java/org/apache/maven/model/ReportSetTest.java | 56 +
.../java/org/apache/maven/model/ReportingTest.java | 56 +
.../apache/maven/model/RepositoryPolicyTest.java | 56 +
.../org/apache/maven/model/RepositoryTest.java | 56 +
.../java/org/apache/maven/model/ResourceTest.java | 56 +
.../test/java/org/apache/maven/model/ScmTest.java | 56 +
.../test/java/org/apache/maven/model/SiteTest.java | 56 +
.../apache/maven/model/merge/ModelMergerTest.java | 430 +++
maven-plugin-api/pom.xml | 87 +
.../apache/maven/monitor/logging/DefaultLog.java | 131 +
.../java/org/apache/maven/plugin/AbstractMojo.java | 193 +
.../plugin/AbstractMojoExecutionException.java | 53 +
.../org/apache/maven/plugin/ContextEnabled.java | 44 +
.../main/java/org/apache/maven/plugin/Mojo.java | 69 +
.../maven/plugin/MojoExecutionException.java | 79 +
.../apache/maven/plugin/MojoFailureException.java | 68 +
.../apache/maven/plugin/MojoNotFoundException.java | 88 +
.../DuplicateMojoDescriptorException.java | 37 +
.../descriptor/DuplicateParameterException.java | 34 +
.../descriptor/InvalidParameterException.java | 37 +
.../InvalidPluginDescriptorException.java | 41 +
.../maven/plugin/descriptor/MojoDescriptor.java | 718 ++++
.../apache/maven/plugin/descriptor/Parameter.java | 207 +
.../maven/plugin/descriptor/PluginDescriptor.java | 439 +++
.../plugin/descriptor/PluginDescriptorBuilder.java | 357 ++
.../maven/plugin/descriptor/Requirement.java | 72 +
.../java/org/apache/maven/plugin/logging/Log.java | 149 +
.../maven/plugin/logging/SystemStreamLog.java | 196 +
maven-plugin-api/src/main/mdo/lifecycle.mdo | 129 +
maven-plugin-api/src/main/mdo/plugin.mdo | 525 +++
maven-plugin-api/src/site/apt/index.apt | 39 +
maven-plugin-api/src/site/site.xml | 42 +
.../descriptor/PluginDescriptorBuilderTest.java | 134 +
maven-plugin-api/src/test/resources/plugin.xml | 90 +
maven-repository-metadata/pom.xml | 57 +
.../src/main/mdo/metadata.mdo | 371 ++
maven-repository-metadata/src/site/apt/index.apt | 52 +
maven-repository-metadata/src/site/site.xml | 38 +
maven-resolver-provider/pom.xml | 132 +
.../internal/ArtifactDescriptorReaderDelegate.java | 157 +
.../internal/ArtifactDescriptorUtils.java | 81 +
.../internal/DefaultArtifactDescriptorReader.java | 390 ++
.../repository/internal/DefaultModelCache.java | 119 +
.../repository/internal/DefaultModelResolver.java | 276 ++
.../internal/DefaultVersionRangeResolver.java | 276 ++
.../internal/DefaultVersionResolver.java | 612 +++
.../repository/internal/LocalSnapshotMetadata.java | 163 +
.../internal/LocalSnapshotMetadataGenerator.java | 82 +
.../repository/internal/MavenAetherModule.java | 80 +
.../maven/repository/internal/MavenMetadata.java | 137 +
.../internal/MavenRepositorySystemUtils.java | 145 +
.../repository/internal/MavenResolverModule.java | 73 +
.../repository/internal/MavenSnapshotMetadata.java | 100 +
.../repository/internal/MavenWorkspaceReader.java | 35 +
.../repository/internal/RelocatedArtifact.java | 114 +
.../internal/RemoteSnapshotMetadata.java | 157 +
.../internal/RemoteSnapshotMetadataGenerator.java | 107 +
.../internal/SnapshotMetadataGeneratorFactory.java | 55 +
.../repository/internal/VersionsMetadata.java | 133 +
.../internal/VersionsMetadataGenerator.java | 108 +
.../internal/VersionsMetadataGeneratorFactory.java | 55 +
.../maven/repository/internal/package-info.java | 25 +
maven-resolver-provider/src/site/apt/index.apt | 33 +
maven-resolver-provider/src/site/site.xml | 38 +
.../internal/AbstractRepositoryTestCase.java | 87 +
.../DefaultArtifactDescriptorReaderTest.java | 77 +
.../internal/DefaultModelResolverTest.java | 222 ++
.../internal/DefaultVersionResolverTest.java | 96 +
.../internal/MavenRepositorySystemUtilsTest.java | 45 +
.../internal/RemoteSnapshotMetadataTest.java | 82 +
.../repository/internal/RepositorySystemTest.java | 220 ++
.../internal/util/ConsoleRepositoryListener.java | 132 +
.../internal/util/ConsoleTransferListener.java | 186 +
.../07.20.3-SNAPSHOT/maven-metadata.xml | 49 +
.../dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml | 47 +
.../artifact/1.0/artifact-1.0-classifier.zip | 0
.../repo/ut/simple/artifact/1.0/artifact-1.0.jar | 0
.../repo/ut/simple/artifact/1.0/artifact-1.0.pom | 48 +
.../repo/ut/simple/artifact/1.0/artifact-1.0.zip | 0
.../repo/ut/simple/artifact/maven-metadata.xml | 34 +
.../dependency/1.0/dependency-1.0-sources.jar | 0
.../ut/simple/dependency/1.0/dependency-1.0.jar | 0
.../ut/simple/dependency/1.0/dependency-1.0.pom | 31 +
.../repo/ut/simple/dependency/maven-metadata.xml | 34 +
.../repo/ut/simple/parent/1.0/parent-1.0.pom | 43 +
.../repo/ut/simple/parent/maven-metadata.xml | 34 +
maven-settings-builder/pom.xml | 79 +
.../settings/building/DefaultSettingsBuilder.java | 282 ++
.../building/DefaultSettingsBuilderFactory.java | 67 +
.../building/DefaultSettingsBuildingRequest.java | 159 +
.../building/DefaultSettingsBuildingResult.java | 58 +
.../settings/building/DefaultSettingsProblem.java | 166 +
.../building/DefaultSettingsProblemCollector.java | 70 +
.../settings/building/FileSettingsSource.java | 59 +
.../maven/settings/building/SettingsBuilder.java | 40 +
.../building/SettingsBuildingException.java | 90 +
.../settings/building/SettingsBuildingRequest.java | 131 +
.../settings/building/SettingsBuildingResult.java | 50 +
.../maven/settings/building/SettingsProblem.java | 100 +
.../building/SettingsProblemCollector.java | 41 +
.../maven/settings/building/SettingsSource.java | 35 +
.../settings/building/StringSettingsSource.java | 69 +
.../maven/settings/building/UrlSettingsSource.java | 60 +
.../settings/crypto/DefaultSettingsDecrypter.java | 117 +
.../crypto/DefaultSettingsDecryptionRequest.java | 120 +
.../crypto/DefaultSettingsDecryptionResult.java | 81 +
.../maven/settings/crypto/SettingsDecrypter.java | 38 +
.../settings/crypto/SettingsDecryptionRequest.java | 65 +
.../settings/crypto/SettingsDecryptionResult.java | 71 +
.../maven/settings/io/DefaultSettingsReader.java | 97 +
.../maven/settings/io/DefaultSettingsWriter.java | 93 +
.../maven/settings/io/SettingsParseException.java | 93 +
.../apache/maven/settings/io/SettingsReader.java | 82 +
.../apache/maven/settings/io/SettingsWriter.java | 74 +
.../maven/settings/merge/MavenSettingsMerger.java | 142 +
.../validation/DefaultSettingsValidator.java | 288 ++
.../settings/validation/SettingsValidator.java | 41 +
maven-settings-builder/src/site/site.xml | 38 +
.../DefaultSettingsBuilderFactoryTest.java | 53 +
.../validation/DefaultSettingsValidatorTest.java | 244 ++
.../src/test/resources/settings/factory/simple.xml | 24 +
maven-settings/pom.xml | 57 +
.../org/apache/maven/settings/RuntimeInfo.java | 55 +
maven-settings/src/main/mdo/settings.mdo | 1073 ++++++
maven-settings/src/site/apt/index.apt | 36 +
maven-settings/src/site/site.xml | 38 +
maven-slf4j-provider/pom.xml | 104 +
.../org/slf4j/impl/MavenFailOnSeverityLogger.java | 142 +
.../java/org/slf4j/impl/MavenLoggerFactory.java | 82 +
.../java/org/slf4j/impl/MavenSimpleLogger.java | 120 +
.../java/org/slf4j/impl/StaticLoggerBinder.java | 89 +
maven-slf4j-provider/src/site/site.xml | 38 +
.../org/slf4j/impl/MavenLoggerFactoryTest.java | 90 +
maven-slf4j-wrapper/pom.xml | 44 +
.../apache/maven/logwrapper/LogLevelRecorder.java | 55 +
.../maven/logwrapper/MavenSlf4jWrapperFactory.java | 33 +
maven-slf4j-wrapper/src/site/site.xml | 38 +
.../maven/logwrapper/LogLevelRecorderTest.java | 49 +
pom.xml | 728 ++++
src/site/resources/images/maven-deps.png | Bin 0 -> 104566 bytes
src/site/site.xml | 70 +
src/site/xdoc/index.xml | 82 +
src/site/xdoc/maven-deps.odg | Bin 0 -> 19887 bytes
1894 files changed, 186770 insertions(+)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..9989fb1
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,92 @@
+<!---
+ 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.
+-->
+Contributing to Apache Maven
+======================
+
+You have found a bug or you have an idea for a cool new feature? Contributing
+code is a great way to give something back to the open source community. Before
+you dig right into the code, there are a few guidelines that we need
+contributors to follow so that we can have a chance of keeping on top of
+things.
+
+Some of the ideas are documented in the [Maven Wiki][maven-wiki]
+which might be interesting to read and for further discussion.
+
+Getting Started
+---------------
+
++ Make sure you have a [JIRA account](https://issues.apache.org/jira/).
++ Make sure you have a [GitHub account](https://github.com/signup/free).
++ If you're planning to implement a new feature, it makes sense to discuss your changes
+ on the [dev list](https://maven.apache.org/mailing-lists.html) first.
+ This way you can make sure you're not wasting your time on something that isn't
+ considered to be in Apache Maven's scope.
++ Submit a ticket for your issue, assuming one does not already exist.
+ + Clearly describe the issue, including steps to reproduce when it is a bug.
+ + Make sure you fill in the earliest version that you know has the issue.
++ Fork the repository on GitHub.
+
+Making and Submitting Changes
+--------------
+
+We accept Pull Requests via GitHub. The [developer mailing list][dev-ml-list] is the
+main channel of communication for contributors.
+There are some guidelines which will make applying PRs easier for us:
++ Create a topic branch from where you want to base your work (this is usually the master branch).
+ Push your changes to a topic branch in your fork of the repository.
++ Make commits of logical units.
++ Respect the original code style: by using the same [codestyle][code-style],
+ patches should only highlight the actual difference, not being disturbed by any formatting issues:
+ + Only use spaces for indentation.
+ + Create minimal diffs - disable on save actions like reformat source code or organize imports.
+ If you feel the source code should be reformatted, create a separate PR for this change.
+ + Check for unnecessary whitespace with `git diff --check` before committing.
++ Make sure your commit messages are in the proper format. Your commit message should contain the key of the JIRA issue.
+```
+[MNG-XXX] - Subject of the JIRA Ticket
+ Optional supplemental description.
+```
++ Make sure you have added the necessary tests (JUnit/[Core IT tests][core-it]) for your changes.
++ Run all the tests with `mvn -Prun-its verify` to assure nothing else was accidentally broken.
++ Submit a pull request to the repository in the Apache organization.
++ Update your JIRA ticket and include a link to the pull request in the ticket.
+
+If you plan to contribute on a regular basis, please consider filing a [contributor license agreement][cla].
+
+Making Trivial Changes
+----------------------
+
+For changes of a trivial nature to comments and documentation, it is not always
+necessary to create a new ticket in JIRA. In this case, it is appropriate to
+start the first line of a commit with '(doc)' instead of a ticket number.
+
+Additional Resources
+--------------------
+
++ [Contributing patches](https://maven.apache.org/guides/development/guide-maven-development.html#Creating_and_submitting_a_patch)
++ [Apache Maven JIRA project page](https://issues.apache.org/jira/projects/MNG/)
++ [Contributor License Agreement][cla]
++ [General GitHub documentation](https://help.github.com/)
++ [GitHub pull request documentation](https://help.github.com/send-pull-requests/)
++ [Apache Maven Twitter Account](https://twitter.com/ASFMavenProject)
++ #Maven IRC channel on freenode.org
+
+[dev-ml-list]: https://maven.apache.org/mailing-lists.html
+[code-style]: https://maven.apache.org/developers/conventions/code.html
+[cla]: https://www.apache.org/licenses/#clas
+[maven-wiki]: https://cwiki.apache.org/confluence/display/MAVEN/Index
+[core-it]: https://maven.apache.org/core-its/core-it-suite/
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..ff917a2
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,169 @@
+/*
+ * 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.
+ */
+
+properties([buildDiscarder(logRotator(artifactNumToKeepStr: '5', numToKeepStr: env.BRANCH_NAME=='master'?'5':'1'))])
+
+def buildOs = 'linux'
+def buildJdk = '8'
+def buildMvn = '3.6.2'
+def runITsOses = ['linux', 'windows']
+def runITsJdks = ['8', '11', '13', '14']
+def runITsMvn = '3.6.2'
+def runITscommand = "mvn clean install -Prun-its,embedded -B -U -V" // -DmavenDistro=... -Dmaven.test.failure.ignore=true
+def tests
+
+try {
+
+def osNode = jenkinsEnv.labelForOS(buildOs)
+node(jenkinsEnv.nodeSelection(osNode)) {
+ dir('build') {
+ stage('Checkout') {
+ checkout scm
+ }
+
+ def WORK_DIR=pwd()
+ def MAVEN_GOAL='verify'
+
+ stage('Configure deploy') {
+ if (env.BRANCH_NAME == 'master'){
+ MAVEN_GOAL='deploy'
+ }
+ }
+
+ stage('Build / Unit Test') {
+ String jdkName = jenkinsEnv.jdkFromVersion(buildOs, buildJdk)
+ String mvnName = jenkinsEnv.mvnFromVersion(buildOs, buildMvn)
+ withMaven(jdk: jdkName, maven: mvnName, mavenLocalRepo:"${WORK_DIR}/.repository", options:[
+ artifactsPublisher(disabled: false),
+ junitPublisher(ignoreAttachments: false),
+ findbugsPublisher(disabled: false),
+ openTasksPublisher(disabled: false),
+ dependenciesFingerprintPublisher(),
+ invokerPublisher(),
+ pipelineGraphPublisher()
+ ]) {
+ sh "mvn clean ${MAVEN_GOAL} -B -U -e -fae -V -Dmaven.test.failure.ignore=true"
+ }
+ dir ('apache-maven/target') {
+ sh "mv apache-maven-*-bin.zip apache-maven-dist.zip"
+ stash includes: 'apache-maven-dist.zip', name: 'dist'
+ }
+ }
+
+ tests = resolveScm source: [$class: 'GitSCMSource', credentialsId: '', id: '_', remote: 'https://gitbox.apache.org/repos/asf/maven-integration-testing.git', traits: [[$class: 'jenkins.plugins.git.traits.BranchDiscoveryTrait'], [$class: 'GitToolSCMSourceTrait', gitTool: 'Default']]], targets: [BRANCH_NAME, 'master']
+ }
+}
+
+Map runITsTasks = [:]
+for (String os in runITsOses) {
+ for (def jdk in runITsJdks) {
+ String osLabel = jenkinsEnv.labelForOS(os);
+ String jdkName = jenkinsEnv.jdkFromVersion(os, "${jdk}")
+ String mvnName = jenkinsEnv.mvnFromVersion(os, "${runITsMvn}")
+ echo "OS: ${os} JDK: ${jdk} => Label: ${osLabel} JDK: ${jdkName}"
+
+ String stageId = "${os}-jdk${jdk}"
+ String stageLabel = "Run ITs ${os.capitalize()} Java ${jdk}"
+ runITsTasks[stageId] = {
+ node(jenkinsEnv.nodeSelection(osLabel)) {
+ stage("${stageLabel}") {
+ echo "NODE_NAME = ${env.NODE_NAME}"
+ // on Windows, need a short path or we hit 256 character limit for paths
+ // using EXECUTOR_NUMBER guarantees that concurrent builds on same agent
+ // will not trample each other plus workaround for JENKINS-52657
+ dir(isUnix() ? 'test' : "c:\\mvn-it-${EXECUTOR_NUMBER}.tmp") {
+ def WORK_DIR=pwd()
+ checkout tests
+ if (isUnix()) {
+ sh "rm -rvf $WORK_DIR/apache-maven-dist.zip $WORK_DIR/it-local-repo"
+ } else {
+ bat "if exist it-local-repo rmdir /s /q it-local-repo"
+ bat "if exist apache-maven-dist.zip del /q apache-maven-dist.zip"
+ }
+ unstash 'dist'
+ try {
+ withMaven(jdk: jdkName, maven: mvnName, mavenLocalRepo:"${WORK_DIR}/it-local-repo", options:[
+ junitPublisher(ignoreAttachments: false)
+ ]) {
+ String cmd = "${runITscommand} -DmavenDistro=$WORK_DIR/apache-maven-dist.zip -Dmaven.test.failure.ignore=true"
+
+ if (isUnix()) {
+ sh 'df -hT'
+ sh "${cmd}"
+ } else {
+ bat 'wmic logicaldisk get size,freespace,caption'
+ bat "${cmd}"
+ }
+ }
+ } finally {
+ archiveDirs(stageId, ['core-it-suite-logs':'core-it-suite/target/test-classes',
+ 'core-it-suite-reports':'core-it-suite/target/surefire-reports'])
+ deleteDir() // clean up after ourselves to reduce disk space
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+// run the parallel ITs
+parallel(runITsTasks)
+
+// JENKINS-34376 seems to make it hard to detect the aborted builds
+} catch (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException e) {
+ echo "[FAILURE-002] FlowInterruptedException ${e}"
+ // this ambiguous condition means a user probably aborted
+ if (e.causes.size() == 0) {
+ currentBuild.result = "ABORTED"
+ } else {
+ currentBuild.result = "FAILURE"
+ }
+ throw e
+} catch (hudson.AbortException e) {
+ echo "[FAILURE-003] AbortException ${e}"
+ // this ambiguous condition means during a shell step, user probably aborted
+ if (e.getMessage().contains('script returned exit code 143')) {
+ currentBuild.result = "ABORTED"
+ } else {
+ currentBuild.result = "FAILURE"
+ }
+ throw e
+} catch (InterruptedException e) {
+ echo "[FAILURE-004] ${e}"
+ currentBuild.result = "ABORTED"
+ throw e
+} catch (Throwable e) {
+ echo "[FAILURE-001] ${e}"
+ currentBuild.result = "FAILURE"
+ throw e
+} finally {
+ // notify completion
+ stage("Notifications") {
+ jenkinsNotify()
+ }
+}
+
+def archiveDirs(stageId, archives) {
+ archives.each { archivePrefix, pathToContent ->
+ if (fileExists(pathToContent)) {
+ zip(zipFile: "${archivePrefix}-${stageId}.zip", dir: pathToContent, archive: true)
+ }
+ }
+}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..5e1d069
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,5 @@
+Apache Maven
+Copyright 2001-2019 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..50a4f3f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,88 @@
+<!---
+ 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.
+-->
+Apache Maven
+============
+
+[![Apache License, Version 2.0, January 2004](https://img.shields.io/github/license/apache/maven.svg?label=License)][license]
+[![Maven Central](https://img.shields.io/maven-central/v/org.apache.maven/apache-maven.svg?label=Maven%20Central)](https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.apache.maven%22%20AND%20a%3A%22apache-maven%22)
+[![Jenkins Status](https://img.shields.io/jenkins/s/https/builds.apache.org/job/maven-box/job/maven/job/master.svg?style=flat-square)][build]
+[![Jenkins tests](https://img.shields.io/jenkins/t/https/builds.apache.org/job/maven-box/job/maven/job/master.svg?style=flat-square)][test-results]
+
+
+Apache Maven is a software project management and comprehension tool. Based on
+the concept of a project object model (POM), Maven can manage a project's
+build, reporting and documentation from a central piece of information.
+
+If you think you have found a bug, please file an issue in the [Maven Issue Tracker](https://issues.apache.org/jira/browse/MNG).
+
+Documentation
+-------------
+
+More information can be found on [Apache Maven Homepage][maven-home].
+Questions related to the usage of Maven should be posted on
+the [Maven User List][users-list].
+
+
+Where can I get the latest release?
+-----------------------------------
+You can download release source from our [download page][maven-download].
+
+Contributing
+------------
+
+If you are interested in the development of Maven, please consult the
+documentation first and afterwards you are welcome to join the developers
+mailing list to ask question or discuss new ideas / features / bugs etc.
+
+Take a look into the [contribution guidelines](CONTRIBUTING.md).
+
+License
+-------
+This code is under the [Apache License, Version 2.0, January 2004][license].
+
+See the `NOTICE` file for required notices and attributions.
+
+Donations
+---------
+You like Apache Maven? Then [donate back to the ASF](https://www.apache.org/foundation/contributing.html) to support the development.
+
+Quick Build
+-------
+If you want to bootstrap Maven, you'll need:
+- Java 1.8+
+- Maven 3.0.5 or later
+- Run Maven, specifying a location into which the completed Maven distro should be installed:
+```
+mvn -DdistributionTargetDir="$HOME/app/maven/apache-maven-3.7.x-SNAPSHOT" clean package
+```
+
+
+[home]: https://maven.apache.org/
+[license]: https://www.apache.org/licenses/LICENSE-2.0
+[build]: https://builds.apache.org/job/maven-box/job/maven/job/master/
+[test-results]: https://builds.apache.org/job/maven-box/job/maven/job/master/lastCompletedBuild/testReport/
+[build-status]: https://img.shields.io/jenkins/s/https/builds.apache.org/job/maven-box/job/maven/job/master.svg?style=flat-square
+[build-tests]: https://img.shields.io/jenkins/t/https/builds.apache.org/job/maven-box/job/maven/job/master.svg?style=flat-square
+[maven-home]: https://maven.apache.org/
+[maven-download]: https://maven.apache.org/download.cgi
+[users-list]: https://maven.apache.org/mailing-lists.html
+[dev-ml-list]: https://www.mail-archive.com/dev@maven.apache.org/
+[code-style]: http://maven.apache.org/developers/conventions/code.html
+[core-it]: https://maven.apache.org/core-its/core-it-suite/
+[building-maven]: https://maven.apache.org/guides/development/guide-building-maven.html
+[cla]: https://www.apache.org/licenses/#clas
+
diff --git a/apache-maven/README.txt b/apache-maven/README.txt
new file mode 100644
index 0000000..3e93a84
--- /dev/null
+++ b/apache-maven/README.txt
@@ -0,0 +1,79 @@
+
+ Apache Maven
+
+ What is it?
+ -----------
+
+ Maven is a software project management and comprehension tool. Based on
+ the concept of a Project Object Model (POM), Maven can manage a project's
+ build, reporting and documentation from a central piece of information.
+
+ Documentation
+ -------------
+
+ The most up-to-date documentation can be found at https://maven.apache.org/.
+
+ Release Notes
+ -------------
+
+ The full list of changes can be found at https://maven.apache.org/docs/history.html.
+
+ System Requirements
+ -------------------
+
+ JDK:
+ 1.7 or above (this is to execute Maven - it still allows you to build against 1.3
+ and prior JDK's).
+ Memory:
+ No minimum requirement.
+ Disk:
+ Approximately 10MB is required for the Maven installation itself. In addition to
+ that, additional disk space will be used for your local Maven repository. The size
+ of your local repository will vary depending on usage but expect at least 500MB.
+ Operating System:
+ Windows:
+ Windows 2000 or above.
+ Unix based systems (Linux, Solaris and Mac OS X) and others:
+ No minimum requirement.
+
+ Installing Maven
+ ----------------
+
+ 1) Unpack the archive where you would like to store the binaries, e.g.:
+
+ Unix-based operating systems (Linux, Solaris and Mac OS X)
+ tar zxvf apache-maven-3.x.y.tar.gz
+ Windows
+ unzip apache-maven-3.x.y.zip
+
+ 2) A directory called "apache-maven-3.x.y" will be created.
+
+ 3) Add the bin directory to your PATH, e.g.:
+
+ Unix-based operating systems (Linux, Solaris and Mac OS X)
+ export PATH=/usr/local/apache-maven-3.x.y/bin:$PATH
+ Windows
+ set PATH="c:\program files\apache-maven-3.x.y\bin";%PATH%
+
+ 4) Make sure JAVA_HOME is set to the location of your JDK
+
+ 5) Run "mvn --version" to verify that it is correctly installed.
+
+ For complete documentation, see https://maven.apache.org/download.html#Installation
+
+ Licensing
+ ---------
+
+ Please see the file called LICENSE.
+
+ Maven URLS
+ ----------
+
+ Home Page: https://maven.apache.org/
+ Downloads: https://maven.apache.org/download.html
+ Release Notes: https://maven.apache.org/docs/history.html
+ Mailing Lists: https://maven.apache.org/mailing-lists.html
+ Source Code: https://gitbox.apache.org/repos/asf/maven.git
+ Issue Tracking: https://issues.apache.org/jira/browse/MNG
+ Wiki: https://cwiki.apache.org/confluence/display/MAVEN/
+ Available Plugins: https://maven.apache.org/plugins/
diff --git a/apache-maven/pom.xml b/apache-maven/pom.xml
new file mode 100644
index 0000000..a73163f
--- /dev/null
+++ b/apache-maven/pom.xml
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven</artifactId>
+ <version>3.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>apache-maven</artifactId>
+ <packaging>pom</packaging>
+
+ <name>Apache Maven Distribution</name>
+ <description>The Apache Maven distribution, source and binary, in zip and tar.gz formats.</description>
+
+ <properties>
+ <distributionFileName>${distributionId}-${project.version}</distributionFileName>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-embedder</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-compat</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.plexus</artifactId>
+ </dependency>
+ <!-- CLI -->
+ <dependency>
+ <groupId>commons-cli</groupId>
+ <artifactId>commons-cli</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http</artifactId>
+ <classifier>shaded</classifier>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpcore</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http-shared</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!-- This is included in Wagon HTTP.
+ We are just making the dependency explicit
+ in order to ease license attribution -->
+ <dependency>
+ <groupId>org.jsoup</groupId>
+ <artifactId>jsoup</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ <version>${slf4jVersion}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-file</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-connector-basic</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-transport-wagon</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-slf4j-provider</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.fusesource.jansi</groupId>
+ <artifactId>jansi</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${distributionFileName}</finalName>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <excludes combine.children="append">
+ <exclude>src/bin/m2.conf</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <configuration>
+ <includeArtifactIds>jansi</includeArtifactIds>
+ <includes>META-INF/native/**</includes>
+ </configuration>
+ <executions>
+ <execution>
+ <id>unpack-jansi-native</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>test-compile</id>
+ <goals>
+ <goal>testCompile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <systemProperties>
+ <property>
+ <name>basedir</name>
+ <value>${basedir}</value>
+ </property>
+ </systemProperties>
+ </configuration>
+ <executions>
+ <execution>
+ <id>test</id>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-distro-packages</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>src/main/assembly/bin.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>apache.snapshots</id>
+ <url>https://repository.apache.org/snapshots/</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <profiles>
+ <profile>
+ <id>create-distribution-in-dir</id>
+ <activation>
+ <property>
+ <name>distributionTargetDir</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-clean-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>clean</goal>
+ </goals>
+ <id>clean-target-dir</id>
+ <phase>prepare-package</phase>
+ <configuration>
+ <excludeDefaultDirectories>true</excludeDefaultDirectories>
+ <filesets>
+ <fileset>
+ <directory>${distributionTargetDir}</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-distribution-dir</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <finalName>./</finalName>
+ <appendAssemblyId>false</appendAssemblyId>
+ <attach>false</attach>
+ <outputDirectory>${distributionTargetDir}</outputDirectory>
+ <descriptors>
+ <descriptor>src/main/assembly/dir.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>apache-release</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>make-src-assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>src/main/assembly/src.xml</descriptor>
+ </descriptors>
+ <tarLongFileMode>gnu</tarLongFileMode>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- calculate checksums of source release for Apache dist area -->
+ <plugin>
+ <groupId>net.nicoulaj.maven.plugins</groupId>
+ <artifactId>checksum-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>source-release-checksum</id>
+ <goals>
+ <goal>files</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <fileSets>
+ <fileSet>
+ <directory>${project.build.directory}</directory>
+ <includes>
+ <include>${project.artifactId}-${project.version}-src.zip</include>
+ <include>${project.artifactId}-${project.version}-src.tar.gz</include>
+ <include>${project.artifactId}-${project.version}-bin.zip</include>
+ <include>${project.artifactId}-${project.version}-bin.tar.gz</include>
+ </includes>
+ </fileSet>
+ </fileSets>
+ <failIfNoFiles>true</failIfNoFiles>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/apache-maven/src/bin/.gitattributes b/apache-maven/src/bin/.gitattributes
new file mode 100644
index 0000000..cc7533f
--- /dev/null
+++ b/apache-maven/src/bin/.gitattributes
@@ -0,0 +1,3 @@
+mvn eol=lf crlf=input
+mvnDebug eol=lf crlf=input
+mvnyjp eol=lf crlf=input
diff --git a/apache-maven/src/bin/m2.conf b/apache-maven/src/bin/m2.conf
new file mode 100644
index 0000000..2235f82
--- /dev/null
+++ b/apache-maven/src/bin/m2.conf
@@ -0,0 +1,8 @@
+main is org.apache.maven.cli.MavenCli from plexus.core
+
+set maven.conf default ${maven.home}/conf
+
+[plexus.core]
+load ${maven.conf}/logging
+optionally ${maven.home}/lib/ext/*.jar
+load ${maven.home}/lib/*.jar
diff --git a/apache-maven/src/bin/mvn b/apache-maven/src/bin/mvn
new file mode 100755
index 0000000..a554c66
--- /dev/null
+++ b/apache-maven/src/bin/mvn
@@ -0,0 +1,199 @@
+#!/bin/sh
+
+# 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.
+
+# -----------------------------------------------------------------------------
+# Apache Maven Startup Script
+#
+# Environment Variable Prerequisites
+#
+# JAVA_HOME Must point at your Java Development Kit installation.
+# MAVEN_OPTS (Optional) Java runtime options used when Maven is executed.
+# MAVEN_SKIP_RC (Optional) Flag to disable loading of mavenrc files.
+# -----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+ if [ -f /etc/mavenrc ] ; then
+ . /etc/mavenrc
+ fi
+
+ if [ -f "$HOME/.mavenrc" ] ; then
+ . "$HOME/.mavenrc"
+ fi
+
+fi
+
+# OS specific support. $var _must_ be set to either true or false.
+cygwin=false;
+mingw=false;
+case "`uname`" in
+ CYGWIN*) cygwin=true;;
+ MINGW*) mingw=true;;
+esac
+
+## resolve links - $0 may be a link to Maven's home
+PRG="$0"
+
+# need this for relative symlinks
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG="`dirname "$PRG"`/$link"
+ fi
+done
+
+saveddir=`pwd`
+
+MAVEN_HOME=`dirname "$PRG"`/..
+
+# make it fully qualified
+MAVEN_HOME=`cd "$MAVEN_HOME" && pwd`
+
+cd "$saveddir"
+
+# For Cygwin, ensure paths are in Unix format before anything is touched
+if $cygwin ; then
+ [ -n "$MAVEN_HOME" ] &&
+ MAVEN_HOME=`cygpath --unix "$MAVEN_HOME"`
+ [ -n "$JAVA_HOME" ] &&
+ JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+ [ -n "$CLASSPATH" ] &&
+ CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For MinGW, ensure paths are in Unix format before anything is touched
+if $mingw ; then
+ [ -n "$MAVEN_HOME" ] &&
+ MAVEN_HOME=`(cd "$MAVEN_HOME"; pwd)`
+ [ -n "$JAVA_HOME" ] &&
+ JAVA_HOME=`(cd "$JAVA_HOME"; pwd)`
+ # TODO classpath?
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+ JAVACMD=`which java`
+else
+ JAVACMD="$JAVA_HOME/bin/java"
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+ echo "The JAVA_HOME environment variable is not defined correctly" >&2
+ echo "This environment variable is needed to run this program" >&2
+ echo "NB: JAVA_HOME should point to a JDK not a JRE" >&2
+ exit 1
+fi
+
+CLASSWORLDS_JAR=`echo "${MAVEN_HOME}"/boot/plexus-classworlds-*.jar`
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ [ -n "$MAVEN_HOME" ] &&
+ MAVEN_HOME=`cygpath --path --windows "$MAVEN_HOME"`
+ [ -n "$JAVA_HOME" ] &&
+ JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+ [ -n "$CLASSPATH" ] &&
+ CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+ [ -n "$CLASSWORLDS_JAR" ] &&
+ CLASSWORLDS_JAR=`cygpath --path --windows "$CLASSWORLDS_JAR"`
+fi
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+(
+ basedir=`find_file_argument_basedir "$@"`
+ wdir="${basedir}"
+ while [ "$wdir" != '/' ] ; do
+ if [ -d "$wdir"/.mvn ] ; then
+ basedir=$wdir
+ break
+ fi
+ wdir=`cd "$wdir/.."; pwd`
+ done
+ echo "${basedir}"
+)
+}
+
+find_file_argument_basedir() {
+(
+ basedir=`pwd`
+
+ found_file_switch=0
+ for arg in "$@"; do
+ if [ ${found_file_switch} -eq 1 ]; then
+ if [ -d "${arg}" ]; then
+ basedir=`cd "${arg}" && pwd -P`
+ elif [ -f "${arg}" ]; then
+ basedir=`dirname "${arg}"`
+ basedir=`cd "${basedir}" && pwd -P`
+ if [ ! -d "${basedir}" ]; then
+ echo "Directory ${basedir} extracted from the -f/--file command-line argument ${arg} does not exist" >&2
+ exit 1
+ fi
+ else
+ echo "POM file ${arg} specified with the -f/--file command line argument does not exist" >&2
+ exit 1
+ fi
+ break
+ fi
+ if [ "$arg" = "-f" -o "$arg" = "--file" ]; then
+ found_file_switch=1
+ fi
+ done
+ echo "${basedir}"
+)
+}
+
+# concatenates all lines of a file
+concat_lines() {
+ if [ -f "$1" ]; then
+ echo "`tr -s '\r\n' ' ' < "$1"`"
+ fi
+}
+
+MAVEN_PROJECTBASEDIR="${MAVEN_BASEDIR:-`find_maven_basedir "$@"`}"
+MAVEN_OPTS="`concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config"` $MAVEN_OPTS"
+
+# For Cygwin, switch project base directory path to Windows format before
+# executing Maven otherwise this will cause Maven not to consider it.
+if $cygwin ; then
+ [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+ MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+fi
+
+export MAVEN_PROJECTBASEDIR
+
+# Provide a "standardized" way to retrieve the CLI args that will
+# work with both Windows and non-Windows executions.
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
+export MAVEN_CMD_LINE_ARGS
+
+exec "$JAVACMD" \
+ $MAVEN_OPTS \
+ $MAVEN_DEBUG_OPTS \
+ -classpath "${CLASSWORLDS_JAR}" \
+ "-Dclassworlds.conf=${MAVEN_HOME}/bin/m2.conf" \
+ "-Dmaven.home=${MAVEN_HOME}" \
+ "-Dlibrary.jansi.path=${MAVEN_HOME}/lib/jansi-native" \
+ "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+ ${CLASSWORLDS_LAUNCHER} "$@"
diff --git a/apache-maven/src/bin/mvn.cmd b/apache-maven/src/bin/mvn.cmd
new file mode 100644
index 0000000..50dafc7
--- /dev/null
+++ b/apache-maven/src/bin/mvn.cmd
@@ -0,0 +1,201 @@
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+@REM -----------------------------------------------------------------------------
+@REM Apache Maven Startup Script
+@REM
+@REM Environment Variable Prerequisites
+@REM
+@REM JAVA_HOME Must point at your Java Development Kit installation.
+@REM MAVEN_BATCH_ECHO (Optional) Set to 'on' to enable the echoing of the batch commands.
+@REM MAVEN_BATCH_PAUSE (Optional) set to 'on' to wait for a key stroke before ending.
+@REM MAVEN_OPTS (Optional) Java runtime options used when Maven is executed.
+@REM MAVEN_SKIP_RC (Optional) Flag to disable loading of mavenrc files.
+@REM -----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%"=="on" echo %MAVEN_BATCH_ECHO%
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat"
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd"
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%"=="" goto OkJHome
+for %%i in (java.exe) do set "JAVACMD=%%~$PATH:i"
+goto checkJCmd
+
+:OkJHome
+set "JAVACMD=%JAVA_HOME%\bin\java.exe"
+
+:checkJCmd
+if exist "%JAVACMD%" goto chkMHome
+
+echo The JAVA_HOME environment variable is not defined correctly >&2
+echo This environment variable is needed to run this program >&2
+echo NB: JAVA_HOME should point to a JDK not a JRE >&2
+goto error
+
+:chkMHome
+set "MAVEN_HOME=%~dp0"
+set "MAVEN_HOME=%MAVEN_HOME:~0,-5%"
+if not "%MAVEN_HOME%"=="" goto checkMCmd
+goto error
+
+:checkMCmd
+if exist "%MAVEN_HOME%\bin\mvn.cmd" goto init
+goto error
+@REM ==== END VALIDATION ====
+
+:init
+
+set MAVEN_CMD_LINE_ARGS=%*
+
+@REM Find the project basedir, i.e., the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set "MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%"
+if not "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set "EXEC_DIR=%CD%"
+set "WDIR=%EXEC_DIR%"
+
+@REM Look for the --file switch and start the search for the .mvn directory from the specified
+@REM POM location, if supplied.
+
+set FILE_ARG=
+:arg_loop
+if "%~1" == "-f" (
+ set "FILE_ARG=%~2"
+ shift
+ goto process_file_arg
+)
+if "%~1" == "--file" (
+ set "FILE_ARG=%~2"
+ shift
+ goto process_file_arg
+)
+@REM If none of the above, skip the argument
+shift
+if not "%~1" == "" (
+ goto arg_loop
+) else (
+ goto findBaseDir
+)
+
+:process_file_arg
+if "%FILE_ARG%" == "" (
+ goto findBaseDir
+)
+if not exist "%FILE_ARG%" (
+ echo POM file "%FILE_ARG%" specified the -f/--file command-line argument does not exist >&2
+ goto error
+)
+if exist "%FILE_ARG%\*" (
+ set "POM_DIR=%FILE_ARG%"
+) else (
+ call :get_directory_from_file "%FILE_ARG%"
+)
+if not exist "%POM_DIR%" (
+ echo Directory "%POM_DIR%" extracted from the -f/--file command-line argument "%FILE_ARG%" does not exist >&2
+ goto error
+)
+set "WDIR=%POM_DIR%"
+goto findBaseDir
+
+:get_directory_from_file
+set "POM_DIR=%~dp1"
+:stripPomDir
+if not "_%POM_DIR:~-1%"=="_\" goto pomDirStripped
+set "POM_DIR=%POM_DIR:~0,-1%"
+goto stripPomDir
+:pomDirStripped
+exit /b
+
+:findBaseDir
+cd /d "%WDIR%"
+:findBaseDirLoop
+if exist "%WDIR%\.mvn" goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set "WDIR=%CD%"
+goto findBaseDirLoop
+
+:baseDirFound
+set "MAVEN_PROJECTBASEDIR=%WDIR%"
+cd /d "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+if "_%EXEC_DIR:~-1%"=="_\" set "EXEC_DIR=%EXEC_DIR:~0,-1%"
+set "MAVEN_PROJECTBASEDIR=%EXEC_DIR%"
+cd /d "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+set "jvmConfig=\.mvn\jvm.config"
+if not exist "%MAVEN_PROJECTBASEDIR%%jvmConfig%" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+for %%i in ("%MAVEN_HOME%"\boot\plexus-classworlds-*) do set CLASSWORLDS_JAR="%%i"
+set CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+
+"%JAVACMD%" ^
+ %JVM_CONFIG_MAVEN_PROPS% ^
+ %MAVEN_OPTS% ^
+ %MAVEN_DEBUG_OPTS% ^
+ -classpath %CLASSWORLDS_JAR% ^
+ "-Dclassworlds.conf=%MAVEN_HOME%\bin\m2.conf" ^
+ "-Dmaven.home=%MAVEN_HOME%" ^
+ "-Dlibrary.jansi.path=%MAVEN_HOME%\lib\jansi-native" ^
+ "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+ %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
+
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
+
+cmd /C exit /B %ERROR_CODE%
diff --git a/apache-maven/src/bin/mvnDebug b/apache-maven/src/bin/mvnDebug
new file mode 100755
index 0000000..be495ff
--- /dev/null
+++ b/apache-maven/src/bin/mvnDebug
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+# 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.
+
+# -----------------------------------------------------------------------------
+# Apache Maven Debug Script
+#
+# Environment Variable Prerequisites
+#
+# JAVA_HOME Must point at your Java Development Kit installation.
+# MAVEN_OPTS (Optional) Java runtime options used when Maven is executed.
+# MAVEN_SKIP_RC (Optional) Flag to disable loading of mavenrc files.
+# -----------------------------------------------------------------------------
+
+MAVEN_DEBUG_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"
+
+echo Preparing to execute Maven in debug mode
+
+env MAVEN_OPTS="$MAVEN_OPTS" MAVEN_DEBUG_OPTS="$MAVEN_DEBUG_OPTS" "`dirname "$0"`/mvn" "$@"
diff --git a/apache-maven/src/bin/mvnDebug.cmd b/apache-maven/src/bin/mvnDebug.cmd
new file mode 100644
index 0000000..5f9a20a
--- /dev/null
+++ b/apache-maven/src/bin/mvnDebug.cmd
@@ -0,0 +1,33 @@
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+@REM -----------------------------------------------------------------------------
+@REM Apache Maven Debug Script
+@REM
+@REM Environment Variable Prerequisites
+@REM
+@REM JAVA_HOME Must point at your Java Development Kit installation.
+@REM MAVEN_BATCH_ECHO (Optional) Set to 'on' to enable the echoing of the batch commands.
+@REM MAVEN_BATCH_PAUSE (Optional) set to 'on' to wait for a key stroke before ending.
+@REM MAVEN_OPTS (Optional) Java runtime options used when Maven is executed.
+@REM MAVEN_SKIP_RC (Optional) Flag to disable loading of mavenrc files.
+@REM -----------------------------------------------------------------------------
+
+@setlocal
+@set MAVEN_DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+
+@call "%~dp0"mvn.cmd %*
diff --git a/apache-maven/src/bin/mvnyjp b/apache-maven/src/bin/mvnyjp
new file mode 100755
index 0000000..a35eabf
--- /dev/null
+++ b/apache-maven/src/bin/mvnyjp
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# 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.
+
+# -----------------------------------------------------------------------------
+# Apache Maven YourKit Profiler Startup Script
+#
+# Environment Variable Prerequisites
+#
+# JAVA_HOME Must point at your Java Development Kit installation.
+# MAVEN_OPTS (Optional) Java runtime options used when Maven is executed.
+# MAVEN_SKIP_RC (Optional) Flag to disable loading of mavenrc files.
+# -----------------------------------------------------------------------------
+
+if [ ! -f "$YJPLIB" ]; then
+ echo "Error: Unable to autodetect the YJP library location. Please set YJPLIB variable" >&2
+ exit 1
+fi
+
+env MAVEN_OPTS="-agentpath:$YJPLIB=onexit=snapshot,onexit=memory,tracing,onlylocal $MAVEN_OPTS" "`dirname "$0"`/mvn" "$@"
diff --git a/apache-maven/src/conf/logging/simplelogger.properties b/apache-maven/src/conf/logging/simplelogger.properties
new file mode 100644
index 0000000..64b331b
--- /dev/null
+++ b/apache-maven/src/conf/logging/simplelogger.properties
@@ -0,0 +1,32 @@
+# 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.
+
+org.slf4j.simpleLogger.defaultLogLevel=info
+org.slf4j.simpleLogger.showDateTime=false
+org.slf4j.simpleLogger.showThreadName=false
+org.slf4j.simpleLogger.showLogName=false
+org.slf4j.simpleLogger.logFile=System.out
+org.slf4j.simpleLogger.cacheOutputStream=true
+org.slf4j.simpleLogger.levelInBrackets=true
+org.slf4j.simpleLogger.log.Sisu=info
+org.slf4j.simpleLogger.warnLevelString=WARNING
+
+# MNG-6181: mvn -X also prints all debug logging from HttpClient
+# Be aware that the shaded packages are used
+# org.apache.http -> org.apache.maven.wagon.providers.http.httpclient
+org.slf4j.simpleLogger.log.org.apache.maven.wagon.providers.http.httpclient=off
+org.slf4j.simpleLogger.log.org.apache.maven.wagon.providers.http.httpclient.wire=off
diff --git a/apache-maven/src/conf/settings.xml b/apache-maven/src/conf/settings.xml
new file mode 100644
index 0000000..e27c579
--- /dev/null
+++ b/apache-maven/src/conf/settings.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<!--
+ | This is the configuration file for Maven. It can be specified at two levels:
+ |
+ | 1. User Level. This settings.xml file provides configuration for a single user,
+ | and is normally provided in ${user.home}/.m2/settings.xml.
+ |
+ | NOTE: This location can be overridden with the CLI option:
+ |
+ | -s /path/to/user/settings.xml
+ |
+ | 2. Global Level. This settings.xml file provides configuration for all Maven
+ | users on a machine (assuming they're all using the same Maven
+ | installation). It's normally provided in
+ | ${maven.conf}/settings.xml.
+ |
+ | NOTE: This location can be overridden with the CLI option:
+ |
+ | -gs /path/to/global/settings.xml
+ |
+ | The sections in this sample file are intended to give you a running start at
+ | getting the most out of your Maven installation. Where appropriate, the default
+ | values (values used when the setting is not specified) are provided.
+ |
+ |-->
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+ <!-- localRepository
+ | The path to the local repository maven will use to store artifacts.
+ |
+ | Default: ${user.home}/.m2/repository
+ <localRepository>/path/to/local/repo</localRepository>
+ -->
+
+ <!-- interactiveMode
+ | This will determine whether maven prompts you when it needs input. If set to false,
+ | maven will use a sensible default value, perhaps based on some other setting, for
+ | the parameter in question.
+ |
+ | Default: true
+ <interactiveMode>true</interactiveMode>
+ -->
+
+ <!-- offline
+ | Determines whether maven should attempt to connect to the network when executing a build.
+ | This will have an effect on artifact downloads, artifact deployment, and others.
+ |
+ | Default: false
+ <offline>false</offline>
+ -->
+
+ <!-- pluginGroups
+ | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
+ | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
+ | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
+ |-->
+ <pluginGroups>
+ <!-- pluginGroup
+ | Specifies a further group identifier to use for plugin lookup.
+ <pluginGroup>com.your.plugins</pluginGroup>
+ -->
+ </pluginGroups>
+
+ <!-- proxies
+ | This is a list of proxies which can be used on this machine to connect to the network.
+ | Unless otherwise specified (by system property or command-line switch), the first proxy
+ | specification in this list marked as active will be used.
+ |-->
+ <proxies>
+ <!-- proxy
+ | Specification for one proxy, to be used in connecting to the network.
+ |
+ <proxy>
+ <id>optional</id>
+ <active>true</active>
+ <protocol>http</protocol>
+ <username>proxyuser</username>
+ <password>proxypass</password>
+ <host>proxy.host.net</host>
+ <port>80</port>
+ <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
+ </proxy>
+ -->
+ </proxies>
+
+ <!-- servers
+ | This is a list of authentication profiles, keyed by the server-id used within the system.
+ | Authentication profiles can be used whenever maven must make a connection to a remote server.
+ |-->
+ <servers>
+ <!-- server
+ | Specifies the authentication information to use when connecting to a particular server, identified by
+ | a unique name within the system (referred to by the 'id' attribute below).
+ |
+ | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
+ | used together.
+ |
+ <server>
+ <id>deploymentRepo</id>
+ <username>repouser</username>
+ <password>repopwd</password>
+ </server>
+ -->
+
+ <!-- Another sample, using keys to authenticate.
+ <server>
+ <id>siteServer</id>
+ <privateKey>/path/to/private/key</privateKey>
+ <passphrase>optional; leave empty if not used.</passphrase>
+ </server>
+ -->
+ </servers>
+
+ <!-- mirrors
+ | This is a list of mirrors to be used in downloading artifacts from remote repositories.
+ |
+ | It works like this: a POM may declare a repository to use in resolving certain artifacts.
+ | However, this repository may have problems with heavy traffic at times, so people have mirrored
+ | it to several places.
+ |
+ | That repository definition will have a unique id, so we can create a mirror reference for that
+ | repository, to be used as an alternate download site. The mirror site will be the preferred
+ | server for that repository.
+ |-->
+ <mirrors>
+ <!-- mirror
+ | Specifies a repository mirror site to use instead of a given repository. The repository that
+ | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
+ | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
+ |
+ <mirror>
+ <id>mirrorId</id>
+ <mirrorOf>repositoryId</mirrorOf>
+ <name>Human Readable Name for this Mirror.</name>
+ <url>http://my.repository.com/repo/path</url>
+ </mirror>
+ -->
+ </mirrors>
+
+ <!-- profiles
+ | This is a list of profiles which can be activated in a variety of ways, and which can modify
+ | the build process. Profiles provided in the settings.xml are intended to provide local machine-
+ | specific paths and repository locations which allow the build to work in the local environment.
+ |
+ | For example, if you have an integration testing plugin - like cactus - that needs to know where
+ | your Tomcat instance is installed, you can provide a variable here such that the variable is
+ | dereferenced during the build process to configure the cactus plugin.
+ |
+ | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
+ | section of this document (settings.xml) - will be discussed later. Another way essentially
+ | relies on the detection of a system property, either matching a particular value for the property,
+ | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
+ | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
+ | Finally, the list of active profiles can be specified directly from the command line.
+ |
+ | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
+ | repositories, plugin repositories, and free-form properties to be used as configuration
+ | variables for plugins in the POM.
+ |
+ |-->
+ <profiles>
+ <!-- profile
+ | Specifies a set of introductions to the build process, to be activated using one or more of the
+ | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
+ | or the command line, profiles have to have an ID that is unique.
+ |
+ | An encouraged best practice for profile identification is to use a consistent naming convention
+ | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
+ | This will make it more intuitive to understand what the set of introduced profiles is attempting
+ | to accomplish, particularly when you only have a list of profile id's for debug.
+ |
+ | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
+ <profile>
+ <id>jdk-1.4</id>
+
+ <activation>
+ <jdk>1.4</jdk>
+ </activation>
+
+ <repositories>
+ <repository>
+ <id>jdk14</id>
+ <name>Repository for JDK 1.4 builds</name>
+ <url>http://www.myhost.com/maven/jdk14</url>
+ <layout>default</layout>
+ <snapshotPolicy>always</snapshotPolicy>
+ </repository>
+ </repositories>
+ </profile>
+ -->
+
+ <!--
+ | Here is another profile, activated by the system property 'target-env' with a value of 'dev',
+ | which provides a specific path to the Tomcat instance. To use this, your plugin configuration
+ | might hypothetically look like:
+ |
+ | ...
+ | <plugin>
+ | <groupId>org.myco.myplugins</groupId>
+ | <artifactId>myplugin</artifactId>
+ |
+ | <configuration>
+ | <tomcatLocation>${tomcatPath}</tomcatLocation>
+ | </configuration>
+ | </plugin>
+ | ...
+ |
+ | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
+ | anything, you could just leave off the <value/> inside the activation-property.
+ |
+ <profile>
+ <id>env-dev</id>
+
+ <activation>
+ <property>
+ <name>target-env</name>
+ <value>dev</value>
+ </property>
+ </activation>
+
+ <properties>
+ <tomcatPath>/path/to/tomcat/instance</tomcatPath>
+ </properties>
+ </profile>
+ -->
+ </profiles>
+
+ <!-- activeProfiles
+ | List of profiles that are active for all builds.
+ |
+ <activeProfiles>
+ <activeProfile>alwaysActiveProfile</activeProfile>
+ <activeProfile>anotherAlwaysActiveProfile</activeProfile>
+ </activeProfiles>
+ -->
+</settings>
diff --git a/apache-maven/src/conf/toolchains.xml b/apache-maven/src/conf/toolchains.xml
new file mode 100644
index 0000000..b263072
--- /dev/null
+++ b/apache-maven/src/conf/toolchains.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<!--
+ | This is the toolchains file for Maven. It can be specified at two levels:
+ |
+ | 1. User Level. This toolchains.xml file provides configuration for a single user,
+ | and is normally provided in ${user.home}/.m2/toolchains.xml.
+ |
+ | NOTE: This location can be overridden with the CLI option:
+ |
+ | -t /path/to/user/toolchains.xml
+ |
+ | 2. Global Level. This toolchains.xml file provides configuration for all Maven
+ | users on a machine (assuming they're all using the same Maven
+ | installation). It's normally provided in
+ | ${maven.conf}/toolchains.xml.
+ |
+ | NOTE: This location can be overridden with the CLI option:
+ |
+ | -gt /path/to/global/toolchains.xml
+ |
+ | The sections in this sample file are intended to give you a running start at
+ | getting the most out of your Maven installation.
+ |-->
+<toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
+
+ <!--
+ | With toolchains you can refer to installations on your system. This
+ | way you don't have to hardcode paths in your pom.xml.
+ |
+ | Every toolchain consist of 3 elements:
+ | * type: the type of tool. An often used value is 'jdk'. Toolchains-aware
+ | plugins should document which type you must use.
+ |
+ | * provides: A list of key/value-pairs.
+ | Based on the toolchain-configuration in the pom.xml Maven will search for
+ | matching <provides/> configuration. You can decide for yourself which key-value
+ | pairs to use. Often used keys are 'version', 'vendor' and 'arch'. By default
+ | the version has a special meaning. If you configured in the pom.xml '1.5'
+ | Maven will search for 1.5 and above.
+ |
+ | * configuration: Additional configuration for this tool.
+ | Look for documentation of the toolchains-aware plugin which configuration elements
+ | can be used.
+ |
+ | See also https://maven.apache.org/guides/mini/guide-using-toolchains.html
+ |
+ | General example
+
+ <toolchain>
+ <type/>
+ <provides>
+ <version>1.0</version>
+ </provides>
+ <configuration/>
+ </toolchain>
+
+ | JDK examples
+
+ <toolchain>
+ <type>jdk</type>
+ <provides>
+ <version>1.5</version>
+ <vendor>sun</vendor>
+ </provides>
+ <configuration>
+ <jdkHome>/path/to/jdk/1.5</jdkHome>
+ </configuration>
+ </toolchain>
+ <toolchain>
+ <type>jdk</type>
+ <provides>
+ <version>1.6</version>
+ <vendor>sun</vendor>
+ </provides>
+ <configuration>
+ <jdkHome>/path/to/jdk/1.6</jdkHome>
+ </configuration>
+ </toolchain>
+
+ -->
+
+</toolchains>
\ No newline at end of file
diff --git a/apache-maven/src/lib/ext/README.txt b/apache-maven/src/lib/ext/README.txt
new file mode 100644
index 0000000..5ebe59e
--- /dev/null
+++ b/apache-maven/src/lib/ext/README.txt
@@ -0,0 +1,2 @@
+Use this directory to contribute 3rd-party extensions to the Maven core. These extensions can either extend or override
+Maven's default implementation.
diff --git a/apache-maven/src/lib/jansi-native/README.txt b/apache-maven/src/lib/jansi-native/README.txt
new file mode 100644
index 0000000..22857a6
--- /dev/null
+++ b/apache-maven/src/lib/jansi-native/README.txt
@@ -0,0 +1,7 @@
+This directory contains Jansi native libraries, extracted from Jansi jar.
+
+You can add your own extensions for platforms not natively supported by
+Jansi: the libraries follow HawtJNI directory and filename conventions.
+See http://fusesource.github.io/hawtjni/documentation/api/org/fusesource/hawtjni/runtime/Library.html
+
+See https://github.com/fusesource/jansi-native for native lib source.
diff --git a/apache-maven/src/main/appended-resources/META-INF/LICENSE.vm b/apache-maven/src/main/appended-resources/META-INF/LICENSE.vm
new file mode 100644
index 0000000..43357d1
--- /dev/null
+++ b/apache-maven/src/main/appended-resources/META-INF/LICENSE.vm
@@ -0,0 +1,84 @@
+##
+## 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.
+##
+
+
+Apache Maven includes a number of components and libraries with separate
+copyright notices and license terms. Your use of those components are
+subject to the terms and conditions of the following licenses:
+##
+#set ( $apacheMavenGroupIds = [ "org.apache.maven", "org.apache.maven.wagon", "org.apache.maven.resolver",
+ "org.apache.maven.shared" ] )
+#set ( $MITLicenseNames = [ "MIT License", "MIT license", "The MIT License" ] )
+#foreach ( $project in $projects )
+#**##foreach ( $license in $project.licenses )
+#* *##set ( $groupId = $project.artifact.groupId )
+#* *##set ( $directory = 'lib' )
+#* *##if ( !$apacheMavenGroupIds.contains( $groupId ) )
+#* *### advertise about each non-Maven dependency
+#* *###
+#* *### infer SPDX license id
+#* *##if ( $license.name == "COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0" )
+#* *##set ( $spdx = 'CDDL-1.0' )
+#* *##elseif ( $MITLicenseNames.contains( $license.name ) )
+#* *##set ( $spdx = 'MIT' )
+#* *##elseif ( $license.name == "Eclipse Public License, Version 1.0" )
+#* *##set ( $spdx = 'EPL-1.0' )
+#* *##elseif ( $license.url.contains( "www.apache.org/licenses/LICENSE-2.0" ) )
+#* *##set ( $spdx = 'Apache-2.0' )
+#* *##else
+#* *### unrecognized license will require analysis to know obligations
+#* *##set ( $spdx = 'unrecognized' )
+#* *##end
+#* *###
+#* *### fix project urls that are wrong in pom
+#* *##if ( $project.url.startsWith( "http://www.eclipse.org/sisu/" ) )
+#* *##set ( $project.url = 'https://www.eclipse.org/sisu/' )
+#* *##elseif ( $project.url.startsWith( "https://github.com/google/guava/" ) )
+#* *##set ( $project.url = 'https://github.com/google/guava/' )
+#* *##elseif ( $project.url.startsWith( "https://github.com/google/guice/" ) )
+#* *##set ( $project.url = 'https://github.com/google/guice/' )
+#* *##end
+#* *###
+#* *### Classworlds is in boot directory, not in lib
+#* *##if ( $project.artifact.artifactId == "plexus-classworlds" )
+#* *##set ( $directory = 'boot' )
+#* *##end
+#* *###
+#* *### copy license file to lib/$artifactId.license
+#* *##set ( $licFile = $directory + '/' + $project.artifact.artifactId + '.license' )
+#* *##if ( $spdx == "MIT" )
+#* *### MIT license contains date and copyright that makes the file specific to each artifact
+#* *##set ( $downloaded = $locator.getResourceAsFile( "licenses/${spdx}-${project.artifact.artifactId}-${project.artifact.version}.txt", "licenses/${licFile}" ) )
+#* *##else
+#* *##set ( $downloaded = $locator.getResourceAsFile( "licenses/${spdx}.txt", "licenses/${licFile}" ) )
+#* *##end
+
+#* *### add dependency info to output
+
+- $directory/${project.artifact.artifactId}-${project.artifact.version}.jar: $project.artifact.toString().replace( ':eclipse-plugin:', ':jar:' )
+ Project: $project.name
+ #if ( $project.url )Project URL: ${project.url}#end
+
+ License: $license.name#if ( $spdx ) ($spdx)#end
+
+ License URL: $license.url ($licFile)
+
+#* *##end
+#**##end
+#end
diff --git a/apache-maven/src/main/appended-resources/META-INF/NOTICE.vm b/apache-maven/src/main/appended-resources/META-INF/NOTICE.vm
new file mode 100644
index 0000000..acf7ba4
--- /dev/null
+++ b/apache-maven/src/main/appended-resources/META-INF/NOTICE.vm
@@ -0,0 +1,116 @@
+##
+## 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.
+##
+This software bundles the following NOTICE files from third party library providers:
+
+META-INF/NOTICE in archive lib/guice-4.2.1-no_aop.jar
+Google Guice - Core Library
+Copyright 2006-2018 Google, Inc.
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+META-INF/NOTICE in archive lib/plexus-utils-3.2.1.jar
+This product includes software developed by the Indiana University
+ Extreme! Lab (http://www.extreme.indiana.edu/).
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+This product includes software developed by
+ThoughtWorks (http://www.thoughtworks.com).
+This product includes software developed by
+javolution (http://javolution.org/).
+This product includes software developed by
+Rome (https://rome.dev.java.net/).
+
+about.html in archive lib/org.eclipse.sisu.inject-0.3.4.jar
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About org.eclipse.sisu.inject</title>
+</head>
+<body lang="EN-US">
+<h2>About org.eclipse.sisu.inject</h2>
+
+<p>November 5, 2013</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+<h3>Third Party Content</h3>
+<p>The Content includes items that have been sourced from third parties as set
+out below. If you did not receive this Content directly from the Eclipse Foundation,
+the following is provided for informational purposes only, and you should look
+to the Redistributor's license for terms and conditions of use.</p>
+
+<h4>ASM 4.1</h4>
+<p>The plug-in includes software developed by the ObjectWeb consortium as part
+of the ASM project at <a href="http://asm.ow2.org/">http://asm.ow2.org/</a>.</p>
+
+<p>A subset of ASM is re-packaged within the source and binary of the plug-in (org.eclipse.sisu.space.asm.*)
+to avoid version collisions with other usage and is also available from the plug-in's github repository.</p>
+
+<p>Your use of the ASM code is subject to the terms and conditions of the ASM License
+below which is also available at <a href="http://asm.ow2.org/license.html">http://asm.ow2.org/license.html</a>.</p>
+
+<blockquote><pre>
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+</pre></blockquote>
+
+</body>
+</html>
diff --git a/apache-maven/src/main/appended-resources/licenses/Apache-2.0.txt b/apache-maven/src/main/appended-resources/licenses/Apache-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/apache-maven/src/main/appended-resources/licenses/Apache-2.0.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
diff --git a/apache-maven/src/main/appended-resources/licenses/CDDL-1.0.txt b/apache-maven/src/main/appended-resources/licenses/CDDL-1.0.txt
new file mode 100644
index 0000000..9bc6342
--- /dev/null
+++ b/apache-maven/src/main/appended-resources/licenses/CDDL-1.0.txt
@@ -0,0 +1,384 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+
+ 1. Definitions.
+
+ 1.1. "Contributor" means each individual or entity that
+ creates or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the
+ Original Software, prior Modifications used by a
+ Contributor (if any), and the Modifications made by that
+ particular Contributor.
+
+ 1.3. "Covered Software" means (a) the Original Software, or
+ (b) Modifications, or (c) the combination of files
+ containing Original Software with files containing
+ Modifications, in each case including portions thereof.
+
+ 1.4. "Executable" means the Covered Software in any form
+ other than Source Code.
+
+ 1.5. "Initial Developer" means the individual or entity
+ that first makes Original Software available under this
+ License.
+
+ 1.6. "Larger Work" means a work which combines Covered
+ Software or portions thereof with code not governed by the
+ terms of this License.
+
+ 1.7. "License" means this document.
+
+ 1.8. "Licensable" means having the right to grant, to the
+ maximum extent possible, whether at the time of the initial
+ grant or subsequently acquired, any and all of the rights
+ conveyed herein.
+
+ 1.9. "Modifications" means the Source Code and Executable
+ form of any of the following:
+
+ A. Any file that results from an addition to,
+ deletion from or modification of the contents of a
+ file containing Original Software or previous
+ Modifications;
+
+ B. Any new file that contains any part of the
+ Original Software or previous Modification; or
+
+ C. Any new file that is contributed or otherwise made
+ available under the terms of this License.
+
+ 1.10. "Original Software" means the Source Code and
+ Executable form of computer software code that is
+ originally released under this License.
+
+ 1.11. "Patent Claims" means any patent claim(s), now owned
+ or hereafter acquired, including without limitation,
+ method, process, and apparatus claims, in any patent
+ Licensable by grantor.
+
+ 1.12. "Source Code" means (a) the common form of computer
+ software code in which modifications are made and (b)
+ associated documentation included in or with such code.
+
+ 1.13. "You" (or "Your") means an individual or a legal
+ entity exercising rights under, and complying with all of
+ the terms of, this License. For legal entities, "You"
+ includes any entity which controls, is controlled by, or is
+ under common control with You. For purposes of this
+ definition, "control" means (a) the power, direct or
+ indirect, to cause the direction or management of such
+ entity, whether by contract or otherwise, or (b) ownership
+ of more than fifty percent (50%) of the outstanding shares
+ or beneficial ownership of such entity.
+
+ 2. License Grants.
+
+ 2.1. The Initial Developer Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, the
+ Initial Developer hereby grants You a world-wide,
+ royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Initial Developer,
+ to use, reproduce, modify, display, perform,
+ sublicense and distribute the Original Software (or
+ portions thereof), with or without Modifications,
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making,
+ using or selling of Original Software, to make, have
+ made, use, practice, sell, and offer for sale, and/or
+ otherwise dispose of the Original Software (or
+ portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b)
+ are effective on the date Initial Developer first
+ distributes or otherwise makes the Original Software
+ available to a third party under the terms of this
+ License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent
+ license is granted: (1) for code that You delete from
+ the Original Software, or (2) for infringements
+ caused by: (i) the modification of the Original
+ Software, or (ii) the combination of the Original
+ Software with other software or devices.
+
+ 2.2. Contributor Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, each
+ Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Contributor to
+ use, reproduce, modify, display, perform, sublicense
+ and distribute the Modifications created by such
+ Contributor (or portions thereof), either on an
+ unmodified basis, with other Modifications, as
+ Covered Software and/or as part of a Larger Work; and
+
+
+ (b) under Patent Claims infringed by the making,
+ using, or selling of Modifications made by that
+ Contributor either alone and/or in combination with
+ its Contributor Version (or portions of such
+ combination), to make, use, sell, offer for sale,
+ have made, and/or otherwise dispose of: (1)
+ Modifications made by that Contributor (or portions
+ thereof); and (2) the combination of Modifications
+ made by that Contributor with its Contributor Version
+ (or portions of such combination).
+
+ (c) The licenses granted in Sections 2.2(a) and
+ 2.2(b) are effective on the date Contributor first
+ distributes or otherwise makes the Modifications
+ available to a third party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent
+ license is granted: (1) for any code that Contributor
+ has deleted from the Contributor Version; (2) for
+ infringements caused by: (i) third party
+ modifications of Contributor Version, or (ii) the
+ combination of Modifications made by that Contributor
+ with other software (except as part of the
+ Contributor Version) or other devices; or (3) under
+ Patent Claims infringed by Covered Software in the
+ absence of Modifications made by that Contributor.
+
+ 3. Distribution Obligations.
+
+ 3.1. Availability of Source Code.
+
+ Any Covered Software that You distribute or otherwise make
+ available in Executable form must also be made available in
+ Source Code form and that Source Code form must be
+ distributed only under the terms of this License. You must
+ include a copy of this License with every copy of the
+ Source Code form of the Covered Software You distribute or
+ otherwise make available. You must inform recipients of any
+ such Covered Software in Executable form as to how they can
+ obtain such Covered Software in Source Code form in a
+ reasonable manner on or through a medium customarily used
+ for software exchange.
+
+ 3.2. Modifications.
+
+ The Modifications that You create or to which You
+ contribute are governed by the terms of this License. You
+ represent that You believe Your Modifications are Your
+ original creation(s) and/or You have sufficient rights to
+ grant the rights conveyed by this License.
+
+ 3.3. Required Notices.
+
+ You must include a notice in each of Your Modifications
+ that identifies You as the Contributor of the Modification.
+ You may not remove or alter any copyright, patent or
+ trademark notices contained within the Covered Software, or
+ any notices of licensing or any descriptive text giving
+ attribution to any Contributor or the Initial Developer.
+
+ 3.4. Application of Additional Terms.
+
+ You may not offer or impose any terms on any Covered
+ Software in Source Code form that alters or restricts the
+ applicable version of this License or the recipients"
+ rights hereunder. You may choose to offer, and to charge a
+ fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Software.
+ However, you may do so only on Your own behalf, and not on
+ behalf of the Initial Developer or any Contributor. You
+ must make it absolutely clear that any such warranty,
+ support, indemnity or liability obligation is offered by
+ You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred
+ by the Initial Developer or such Contributor as a result of
+ warranty, support, indemnity or liability terms You offer.
+
+
+ 3.5. Distribution of Executable Versions.
+
+ You may distribute the Executable form of the Covered
+ Software under the terms of this License or under the terms
+ of a license of Your choice, which may contain terms
+ different from this License, provided that You are in
+ compliance with the terms of this License and that the
+ license for the Executable form does not attempt to limit
+ or alter the recipient"s rights in the Source Code form
+ from the rights set forth in this License. If You
+ distribute the Covered Software in Executable form under a
+ different license, You must make it absolutely clear that
+ any terms which differ from this License are offered by You
+ alone, not by the Initial Developer or Contributor. You
+ hereby agree to indemnify the Initial Developer and every
+ Contributor for any liability incurred by the Initial
+ Developer or such Contributor as a result of any such terms
+ You offer.
+
+ 3.6. Larger Works.
+
+ You may create a Larger Work by combining Covered Software
+ with other code not governed by the terms of this License
+ and distribute the Larger Work as a single product. In such
+ a case, You must make sure the requirements of this License
+ are fulfilled for the Covered Software.
+
+ 4. Versions of the License.
+
+ 4.1. New Versions.
+
+ Sun Microsystems, Inc. is the initial license steward and
+ may publish revised and/or new versions of this License
+ from time to time. Each version will be given a
+ distinguishing version number. Except as provided in
+ Section 4.3, no one other than the license steward has the
+ right to modify this License.
+
+ 4.2. Effect of New Versions.
+
+ You may always continue to use, distribute or otherwise
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. If the Initial Developer includes a
+ notice in the Original Software prohibiting it from being
+ distributed or otherwise made available under any
+ subsequent version of the License, You must distribute and
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. Otherwise, You may also choose to
+ use, distribute or otherwise make the Covered Software
+ available under the terms of any subsequent version of the
+ License published by the license steward.
+
+ 4.3. Modified Versions.
+
+ When You are an Initial Developer and You want to create a
+ new license for Your Original Software, You may create and
+ use a modified version of this License if You: (a) rename
+ the license and remove any references to the name of the
+ license steward (except to note that the license differs
+ from this License); and (b) otherwise make it clear that
+ the license contains terms which differ from this License.
+
+
+ 5. DISCLAIMER OF WARRANTY.
+
+ COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+ BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+ SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+ PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+ PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+ COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+ INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+ WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+ DISCLAIMER.
+
+ 6. TERMINATION.
+
+ 6.1. This License and the rights granted hereunder will
+ terminate automatically if You fail to comply with terms
+ herein and fail to cure such breach within 30 days of
+ becoming aware of the breach. Provisions which, by their
+ nature, must remain in effect beyond the termination of
+ this License shall survive.
+
+ 6.2. If You assert a patent infringement claim (excluding
+ declaratory judgment actions) against Initial Developer or
+ a Contributor (the Initial Developer or Contributor against
+ whom You assert such claim is referred to as "Participant")
+ alleging that the Participant Software (meaning the
+ Contributor Version where the Participant is a Contributor
+ or the Original Software where the Participant is the
+ Initial Developer) directly or indirectly infringes any
+ patent, then any and all rights granted directly or
+ indirectly to You by such Participant, the Initial
+ Developer (if the Initial Developer is not the Participant)
+ and all Contributors under Sections 2.1 and/or 2.2 of this
+ License shall, upon 60 days notice from Participant
+ terminate prospectively and automatically at the expiration
+ of such 60 day notice period, unless if within such 60 day
+ period You withdraw Your claim with respect to the
+ Participant Software against such Participant either
+ unilaterally or pursuant to a written agreement with
+ Participant.
+
+ 6.3. In the event of termination under Sections 6.1 or 6.2
+ above, all end user licenses that have been validly granted
+ by You or any distributor hereunder prior to termination
+ (excluding licenses granted to You by any distributor)
+ shall survive termination.
+
+ 7. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+ INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+ COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+ LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+ STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+ INJURY RESULTING FROM SUCH PARTY"S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+ NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+ APPLY TO YOU.
+
+ 8. U.S. GOVERNMENT END USERS.
+
+ The Covered Software is a "commercial item," as that term is
+ defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+ computer software" (as that term is defined at 48 C.F.R. "
+ 252.227-7014(a)(1)) and "commercial computer software
+ documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+ 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+ through 227.7202-4 (June 1995), all U.S. Government End Users
+ acquire Covered Software with only those rights set forth herein.
+ This U.S. Government Rights clause is in lieu of, and supersedes,
+ any other FAR, DFAR, or other clause or provision that addresses
+ Government rights in computer software under this License.
+
+ 9. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the
+ extent necessary to make it enforceable. This License shall be
+ governed by the law of the jurisdiction specified in a notice
+ contained within the Original Software (except to the extent
+ applicable law, if any, provides otherwise), excluding such
+ jurisdiction"s conflict-of-law provisions. Any litigation
+ relating to this License shall be subject to the jurisdiction of
+ the courts located in the jurisdiction and venue specified in a
+ notice contained within the Original Software, with the losing
+ party responsible for costs, including, without limitation, court
+ costs and reasonable attorneys" fees and expenses. The
+ application of the United Nations Convention on Contracts for the
+ International Sale of Goods is expressly excluded. Any law or
+ regulation which provides that the language of a contract shall
+ be construed against the drafter shall not apply to this License.
+ You agree that You alone are responsible for compliance with the
+ United States export administration regulations (and the export
+ control laws and regulation of any other countries) when You use,
+ distribute or otherwise make available any Covered Software.
+
+ 10. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or
+ indirectly, out of its utilization of rights under this License
+ and You agree to work with Initial Developer and Contributors to
+ distribute such responsibility on an equitable basis. Nothing
+ herein is intended or shall be deemed to constitute any admission
+ of liability.
diff --git a/apache-maven/src/main/appended-resources/licenses/EPL-1.0.txt b/apache-maven/src/main/appended-resources/licenses/EPL-1.0.txt
new file mode 100644
index 0000000..6a200a1
--- /dev/null
+++ b/apache-maven/src/main/appended-resources/licenses/EPL-1.0.txt
@@ -0,0 +1,210 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+ 1. DEFINITIONS
+
+ "Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and
+
+ b) in the case of each subsequent Contributor:
+
+ i) changes to the Program, and
+
+ ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from
+a Contributor if it was added to the Program by such Contributor itself or
+anyone acting on such Contributor's behalf. Contributions do not include additions
+to the Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii) are
+not derivative works of the Program.
+
+ "Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including
+all Contributors.
+
+ 2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce,
+prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative
+works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and
+the Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered by
+the Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses
+to its Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth
+in this Agreement.
+
+ 3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under
+its own license agreement, provided that:
+
+ a) it complies with the terms and conditions of this Agreement; and
+
+ b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages,
+such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered
+by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor,
+and informs licensees how to obtain it in a reasonable manner on or through
+a medium customarily used for software exchange.
+
+ When the Program is made available in source code form:
+
+ a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within
+the Program.
+
+Each Contributor must identify itself as the originator of its Contribution,
+if any, in a manner that reasonably allows subsequent Recipients to identify
+the originator of the Contribution.
+
+ 4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor
+who includes the Program in a commercial product offering should do so in
+a manner which does not create potential liability for other Contributors.
+Therefore, if a Contributor includes the Program in a commercial product offering,
+such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor
+to the extent caused by the acts or omissions of such Commercial Contributor
+in connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense
+and any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If
+that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial
+Contributor's responsibility alone. Under this section, the Commercial Contributor
+would have to defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other Contributor
+to pay any damages as a result, the Commercial Contributor must pay those
+damages.
+
+ 5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON
+AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS
+OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
+TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+Each Recipient is solely responsible for determining the appropriateness of
+using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement, including but not limited to the
+risks and costs of program errors, compliance with applicable laws, damage
+to or loss of data, programs or equipment, and unavailability or interruption
+of operations.
+
+ 6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
+LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+ 7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of
+the terms of this Agreement, and without further action by the parties hereto,
+such provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+(excluding combinations of the Program with other software or hardware) infringes
+such Recipient's patent(s), then such Recipient's rights granted under Section
+2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and
+does not cure such failure in a reasonable period of time after becoming aware
+of such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as reasonably
+practicable. However, Recipient's obligations under this Agreement and any
+licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but
+in order to avoid inconsistency the Agreement is copyrighted and may only
+be modified in the following manner. The Agreement Steward reserves the right
+to publish new versions (including revisions) of this Agreement from time
+to time. No one other than the Agreement Steward has the right to modify this
+Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse
+Foundation may assign the responsibility to serve as the Agreement Steward
+to a suitable separate entity. Each new version of the Agreement will be given
+a distinguishing version number. The Program (including Contributions) may
+always be distributed subject to the version of the Agreement under which
+it was received. In addition, after a new version of the Agreement is published,
+Contributor may elect to distribute the Program (including its Contributions)
+under the new version. Except as expressly stated in Sections 2(a) and 2(b)
+above, Recipient receives no rights or licenses to the intellectual property
+of any Contributor under this Agreement, whether expressly, by implication,
+estoppel or otherwise. All rights in the Program not expressly granted under
+this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual
+property laws of the United States of America. No party to this Agreement
+will bring a legal action under this Agreement more than one year after the
+cause of action arose. Each party waives its rights to a jury trial in any
+resulting litigation.
diff --git a/apache-maven/src/main/appended-resources/licenses/MIT-jsoup-1.12.1.txt b/apache-maven/src/main/appended-resources/licenses/MIT-jsoup-1.12.1.txt
new file mode 100644
index 0000000..fa8a44e
--- /dev/null
+++ b/apache-maven/src/main/appended-resources/licenses/MIT-jsoup-1.12.1.txt
@@ -0,0 +1,23 @@
+https://raw.githubusercontent.com/jhy/jsoup/jsoup-1.12.1/LICENSE
+
+The MIT License
+
+Copyright (c) 2009-2019 Jonathan Hedley <jo...@hedley.net>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/apache-maven/src/main/appended-resources/licenses/MIT-slf4j-api-1.7.29.txt b/apache-maven/src/main/appended-resources/licenses/MIT-slf4j-api-1.7.29.txt
new file mode 100644
index 0000000..5a09409
--- /dev/null
+++ b/apache-maven/src/main/appended-resources/licenses/MIT-slf4j-api-1.7.29.txt
@@ -0,0 +1,23 @@
+https://raw.githubusercontent.com/qos-ch/slf4j/v_1.7.29/LICENSE.txt
+
+Copyright (c) 2004-2017 QOS.ch
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/apache-maven/src/main/assembly/bin.xml b/apache-maven/src/main/assembly/bin.xml
new file mode 100644
index 0000000..a04557d
--- /dev/null
+++ b/apache-maven/src/main/assembly/bin.xml
@@ -0,0 +1,30 @@
+<!--
+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.
+-->
+
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
+ <id>bin</id>
+ <formats>
+ <format>zip</format>
+ <format>tar.gz</format>
+ </formats>
+ <componentDescriptors>
+ <componentDescriptor>src/main/assembly/component.xml</componentDescriptor>
+ </componentDescriptors>
+</assembly>
diff --git a/apache-maven/src/main/assembly/component.xml b/apache-maven/src/main/assembly/component.xml
new file mode 100644
index 0000000..14a297e
--- /dev/null
+++ b/apache-maven/src/main/assembly/component.xml
@@ -0,0 +1,104 @@
+<!--
+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.
+-->
+<component xmlns="http://maven.apache.org/ASSEMBLY-COMPONENT/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/ASSEMBLY-COMPONENT/2.0.0 http://maven.apache.org/xsd/assembly-component-2.0.0.xsd">
+ <dependencySets>
+ <dependencySet>
+ <useProjectArtifact>false</useProjectArtifact>
+ <outputDirectory>boot</outputDirectory>
+ <includes>
+ <include>org.codehaus.plexus:plexus-classworlds</include>
+ </includes>
+ </dependencySet>
+ <dependencySet>
+ <useProjectArtifact>false</useProjectArtifact>
+ <outputDirectory>lib</outputDirectory>
+ <excludes>
+ <exclude>org.codehaus.plexus:plexus-classworlds</exclude>
+ <exclude>org.jsoup:jsoup</exclude>
+ </excludes>
+ </dependencySet>
+ </dependencySets>
+ <fileSets>
+ <fileSet>
+ <includes>
+ <include>README*</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>target/maven-shared-archive-resources/META-INF</directory>
+ <outputDirectory>./</outputDirectory>
+ <includes>
+ <include>LICENSE</include>
+ <include>NOTICE</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>target/licenses/lib</directory>
+ <outputDirectory>lib</outputDirectory>
+ <includes>
+ <include>**</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>target/licenses/boot</directory>
+ <outputDirectory>boot</outputDirectory>
+ <includes>
+ <include>**</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>target/dependency/META-INF/native</directory>
+ <outputDirectory>lib/jansi-native</outputDirectory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <fileMode>0755</fileMode>
+ </fileSet>
+ <fileSet>
+ <directory>src/bin</directory>
+ <outputDirectory>bin</outputDirectory>
+ <includes>
+ <include>*.cmd</include>
+ <include>*.conf</include>
+ </includes>
+ <lineEnding>dos</lineEnding>
+ </fileSet>
+ <fileSet>
+ <directory>src/bin</directory>
+ <outputDirectory>bin</outputDirectory>
+ <includes>
+ <include>mvn</include>
+ <include>mvnDebug</include>
+ <!-- This is so that CI systems can periodically run the profiler -->
+ <include>mvnyjp</include>
+ </includes>
+ <lineEnding>unix</lineEnding>
+ <fileMode>0755</fileMode>
+ </fileSet>
+ <fileSet>
+ <directory>src/conf</directory>
+ <outputDirectory>conf</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>src/lib</directory>
+ <outputDirectory>lib</outputDirectory>
+ </fileSet>
+ </fileSets>
+</component>
diff --git a/apache-maven/src/main/assembly/dir.xml b/apache-maven/src/main/assembly/dir.xml
new file mode 100644
index 0000000..580b209
--- /dev/null
+++ b/apache-maven/src/main/assembly/dir.xml
@@ -0,0 +1,30 @@
+<!--
+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.
+-->
+
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
+ <id>dir</id>
+ <formats>
+ <format>dir</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <componentDescriptors>
+ <componentDescriptor>src/main/assembly/component.xml</componentDescriptor>
+ </componentDescriptors>
+</assembly>
diff --git a/apache-maven/src/main/assembly/src.xml b/apache-maven/src/main/assembly/src.xml
new file mode 100644
index 0000000..9f43a0a
--- /dev/null
+++ b/apache-maven/src/main/assembly/src.xml
@@ -0,0 +1,58 @@
+<!--
+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.
+-->
+
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
+ <id>src</id>
+ <formats>
+ <format>zip</format>
+ <format>tar.gz</format>
+ </formats>
+ <fileSets>
+ <fileSet>
+ <directory>${project.basedir}/..</directory>
+ <outputDirectory>/</outputDirectory>
+ <excludes>
+ <exclude>%regex[(?!((?!target/)[^/]+/)*src/).*target.*]</exclude>
+ <exclude>**/*.log</exclude>
+ <exclude>**/.gitignore</exclude>
+ <exclude>**/.gitattributes</exclude>
+ <exclude>init-git-svn.sh</exclude>
+ <exclude>**/.repository/**</exclude>
+ <exclude>**/.classpath</exclude>
+ <exclude>**/.project</exclude>
+ <exclude>**/.settings/**</exclude>
+ <exclude>**/*.iml</exclude>
+ <exclude>**/*.ipr</exclude>
+ <exclude>**/.idea/**</exclude>
+ <exclude>**/.DS_Store</exclude>
+ <exclude>**/build/**</exclude>
+ </excludes>
+ </fileSet>
+ <fileSet>
+ <directory>${project.build.directory}/maven-shared-archive-resources/META-INF</directory>
+ <outputDirectory>/</outputDirectory>
+ <includes>
+ <include>DEPENDENCIES</include>
+ <!-- exclude the license and notice as they are not as accurate as the ones from above -->
+ </includes>
+ </fileSet>
+ </fileSets>
+</assembly>
+
diff --git a/apache-maven/src/site/site.xml b/apache-maven/src/site/site.xml
new file mode 100644
index 0000000..cd7807c
--- /dev/null
+++ b/apache-maven/src/site/site.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project xmlns="http://maven.apache.org/DECORATION/1.8.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.0 http://maven.apache.org/xsd/decoration-1.8.0.xsd">
+
+ <edit>${project.scm.url}</edit>
+
+ <body>
+ <menu ref="parent"/>
+ <menu ref="reports"/>
+ </body>
+</project>
\ No newline at end of file
diff --git a/apache-maven/src/test/java/org/apache/maven/settings/GlobalSettingsTest.java b/apache-maven/src/test/java/org/apache/maven/settings/GlobalSettingsTest.java
new file mode 100644
index 0000000..257350c
--- /dev/null
+++ b/apache-maven/src/test/java/org/apache/maven/settings/GlobalSettingsTest.java
@@ -0,0 +1,54 @@
+package org.apache.maven.settings;
+
+/*
+ * 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 junit.framework.TestCase;
+import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * Tests that the global settings.xml shipped with the distribution is in good state.
+ *
+ * @author Benjamin Bentmann
+ */
+public class GlobalSettingsTest
+ extends TestCase
+{
+
+ public void testValidGlobalSettings()
+ throws Exception
+ {
+ String basedir = System.getProperty( "basedir", System.getProperty( "user.dir" ) );
+
+ File globalSettingsFile = new File( basedir, "src/conf/settings.xml" );
+ assertTrue( globalSettingsFile.getAbsolutePath(), globalSettingsFile.isFile() );
+
+ try ( Reader reader = new InputStreamReader( new FileInputStream( globalSettingsFile ), StandardCharsets.UTF_8) )
+ {
+ new SettingsXpp3Reader().read( reader );
+ }
+ }
+
+}
diff --git a/deploySite.sh b/deploySite.sh
new file mode 100644
index 0000000..d7a5c5f
--- /dev/null
+++ b/deploySite.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+#
+# 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.
+#
+
+mvn -Preporting site site:stage "$@"
+mvn scm-publish:publish-scm "$@"
diff --git a/doap_Maven.rdf b/doap_Maven.rdf
new file mode 100644
index 0000000..1eb1216
--- /dev/null
+++ b/doap_Maven.rdf
@@ -0,0 +1,301 @@
+<!--
+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.
+-->
+<rdf:RDF xml:lang="en" xmlns="http://usefulinc.com/ns/doap#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:asfext="http://projects.apache.org/ns/asfext#" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <Project rdf:about="http://Maven.rdf.apache.org/">
+ <created>2001</created>
+ <license rdf:resource="http://www.apache.org/licenses/LICENSE-2.0.txt"/>
+ <name>Apache Maven</name>
+ <homepage rdf:resource="https://maven.apache.org/"/>
+ <asfext:pmc rdf:resource="https://maven.apache.org/"/>
+ <shortdesc>Maven is a project development management and comprehension tool.</shortdesc>
+ <description>Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.</description>
+ <bug-database rdf:resource="https://issues.apache.org/jira/browse/MNG"/>
+ <mailing-list rdf:resource="https://maven.apache.org/mailing-lists.html"/>
+ <download-page rdf:resource="https://maven.apache.org/download.html"/>
+ <programming-language>Java</programming-language>
+ <category rdf:resource="http://projects.apache.org/category/build-management"/>
+ <release>
+ <Version>
+ <name>Latest stable release</name>
+ <created>2019-11-19</created>
+ <revision>3.6.3</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.3/source/apache-maven-3.6.3-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.3/source/apache-maven-3.6.3-src.tar.gz</file-release>
+ </Version>
+ <Version>
+ <name>Apache Maven 3.6.2</name>
+ <created>2019-08-27</created>
+ <revision>3.6.2</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.2/source/apache-maven-3.6.2-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.2/source/apache-maven-3.6.2-src.tar.gz</file-release>
+ </Version>
+ <Version>
+ <name>Apache Maven 3.6.1</name>
+ <created>2019-04-04</created>
+ <revision>3.6.1</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.1/source/apache-maven-3.6.1-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.1/source/apache-maven-3.6.1-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.6.0</name>
+ <created>2018-10-23</created>
+ <revision>3.6.0</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.0/source/apache-maven-3.6.0-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.6.0/source/apache-maven-3.6.0-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.5.4</name>
+ <created>2018-06-21</created>
+ <revision>3.5.4</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.4/source/apache-maven-3.5.4-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.4/source/apache-maven-3.5.4-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.5.3</name>
+ <created>2018-03-08</created>
+ <revision>3.5.3</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.3/source/apache-maven-3.5.3-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.3/source/apache-maven-3.5.3-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.5.2</name>
+ <created>2017-10-24</created>
+ <revision>3.5.2</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.2/source/apache-maven-3.5.2-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.2/source/apache-maven-3.5.2-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.5.0</name>
+ <created>2017-04-07</created>
+ <revision>3.5.0</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.0/source/apache-maven-3.5.0-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.5.0/source/apache-maven-3.5.0-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.3.9</name>
+ <created>2015-11-14</created>
+ <revision>3.3.9</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.9/source/apache-maven-3.3.9-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.9/source/apache-maven-3.3.9-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.3.3</name>
+ <created>2015-04-28</created>
+ <revision>3.3.3</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.3/source/apache-maven-3.3.3-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.3/source/apache-maven-3.3.3-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.3.1</name>
+ <created>2015-03-18</created>
+ <revision>3.3.1</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.1/binaries/apache-maven-3.3.1-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.1/binaries/apache-maven-3.3.1-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.1/source/apache-maven-3.3.1-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.3.1/source/apache-maven-3.3.1-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.2.5</name>
+ <created>2014-12-20</created>
+ <revision>3.2.5</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.5/source/apache-maven-3.2.5-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.5/source/apache-maven-3.2.5-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.2.3</name>
+ <created>2014-08-17</created>
+ <revision>3.2.3</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.3/source/apache-maven-3.2.3-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.3/source/apache-maven-3.2.3-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.2.2</name>
+ <created>2014-06-25</created>
+ <revision>3.2.2</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.2/binaries/apache-maven-3.2.2-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.2/binaries/apache-maven-3.2.2-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.2/source/apache-maven-3.2.2-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.2/source/apache-maven-3.2.2-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.2.1</name>
+ <created>2014-02-21</created>
+ <revision>3.2.1</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.1/source/apache-maven-3.2.1-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.2.1/source/apache-maven-3.2.1-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.1.1</name>
+ <created>2013-10-04</created>
+ <revision>3.1.1</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.1.1/source/apache-maven-3.1.1-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.1.1/source/apache-maven-3.1.1-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.1.0</name>
+ <created>2013-07-15</created>
+ <revision>3.1.0</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.1.0/binaries/apache-maven-3.1.0-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.1.0/binaries/apache-maven-3.1.0-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.1.0/source/apache-maven-3.1.0-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.1.0/source/apache-maven-3.1.0-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.0.5</name>
+ <created>2013-02-23</created>
+ <revision>3.0.5</revision>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.0.5/source/apache-maven-3.0.5-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/maven-3/3.0.5/source/apache-maven-3.0.5-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.0.4</name>
+ <created>2012-01-20</created>
+ <revision>3.0.4</revision>
+ <file-release>http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.4-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.4-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/source/apache-maven-3.0.4-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/source/apache-maven-3.0.4-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.0.3</name>
+ <created>2011-03-03</created>
+ <revision>3.0.3</revision>
+ <file-release>http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.3-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.3-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/source/apache-maven-3.0.3-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/source/apache-maven-3.0.3-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.0.2</name>
+ <created>2011-01-12</created>
+ <revision>3.0.2</revision>
+ <file-release>http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.2-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.2-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/source/apache-maven-3.0.2-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/source/apache-maven-3.0.2-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.0.1</name>
+ <created>2010-11-23</created>
+ <revision>3.0.1</revision>
+ <file-release>http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.1-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.1-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/source/apache-maven-3.0.1-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/source/apache-maven-3.0.1-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <release>
+ <Version>
+ <name>Apache Maven 3.0</name>
+ <created>2010-10-04</created>
+ <revision>3.0</revision>
+ <file-release>http://archive.apache.org/dist/maven/binaries/apache-maven-3.0-bin.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/binaries/apache-maven-3.0-bin.tar.gz</file-release>
+ <file-release>http://archive.apache.org/dist/maven/source/apache-maven-3.0-src.zip</file-release>
+ <file-release>http://archive.apache.org/dist/maven/source/apache-maven-3.0-src.tar.gz</file-release>
+ </Version>
+ </release>
+ <repository>
+ <GitRepository>
+ <location rdf:resource="https://gitbox.apache.org/repos/asf/maven.git"/>
+ <browse rdf:resource="https://gitbox.apache.org/repos/asf/maven.git"/>
+ </GitRepository>
+ </repository>
+ <repository>
+ <GitRepository>
+ <location rdf:resource="https://gitbox.apache.org/repos/asf/maven-integration-testing.git"/>
+ <browse rdf:resource="https://gitbox.apache.org/repos/asf/maven-integration-testing.git"/>
+ </GitRepository>
+ </repository>
+ <maintainer>
+ <foaf:Person>
+ <foaf:name>Apache Maven PMC</foaf:name>
+ <foaf:mbox rdf:resource="mailto:dev@maven.apache.org"/>
+ </foaf:Person>
+ </maintainer>
+ </Project>
+</rdf:RDF>
diff --git a/maven-artifact/pom.xml b/maven-artifact/pom.xml
new file mode 100644
index 0000000..336505b
--- /dev/null
+++ b/maven-artifact/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven</artifactId>
+ <version>3.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>maven-artifact</artifactId>
+
+ <name>Maven Artifact</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifestEntries>
+ <Main-Class>org.apache.maven.artifact.versioning.ComparableVersion</Main-Class>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java b/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
new file mode 100644
index 0000000..377935d
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
@@ -0,0 +1,161 @@
+package org.apache.maven.artifact;
+
+/*
+ * 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 java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
+import org.apache.maven.artifact.versioning.VersionRange;
+
+/**
+ * Maven Artifact interface. Notice that it mixes artifact definition concepts (groupId, artifactId, version)
+ * with dependency information (version range, scope).
+ */
+public interface Artifact
+ extends Comparable<Artifact>
+{
+
+ String RELEASE_VERSION = "RELEASE";
+
+ String LATEST_VERSION = "LATEST";
+
+ String SNAPSHOT_VERSION = "SNAPSHOT";
+
+ Pattern VERSION_FILE_PATTERN = Pattern.compile( "^(.*)-([0-9]{8}\\.[0-9]{6})-([0-9]+)$" );
+
+ // TODO into artifactScope handler
+
+ String SCOPE_COMPILE = "compile";
+
+ String SCOPE_COMPILE_PLUS_RUNTIME = "compile+runtime";
+
+ String SCOPE_TEST = "test";
+
+ String SCOPE_RUNTIME = "runtime";
+
+ String SCOPE_RUNTIME_PLUS_SYSTEM = "runtime+system";
+
+ String SCOPE_PROVIDED = "provided";
+
+ String SCOPE_SYSTEM = "system";
+
+ String SCOPE_IMPORT = "import"; // Used to import dependencyManagement dependencies
+
+ String getGroupId();
+
+ String getArtifactId();
+
+ String getVersion();
+
+ void setVersion( String version );
+
+ String getScope();
+
+ String getType();
+
+ String getClassifier();
+
+ boolean hasClassifier();
+
+ File getFile();
+
+ void setFile( File destination );
+
+ String getBaseVersion();
+
+ void setBaseVersion( String baseVersion );
+
+ String getId();
+
+ String getDependencyConflictId();
+
+ void addMetadata( ArtifactMetadata metadata );
+
+ Collection<ArtifactMetadata> getMetadataList();
+
+ void setRepository( ArtifactRepository remoteRepository );
+
+ ArtifactRepository getRepository();
+
+ void updateVersion( String version, ArtifactRepository localRepository );
+
+ String getDownloadUrl();
+
+ void setDownloadUrl( String downloadUrl );
+
+ ArtifactFilter getDependencyFilter();
+
+ void setDependencyFilter( ArtifactFilter artifactFilter );
+
+ ArtifactHandler getArtifactHandler();
+
+ List<String> getDependencyTrail();
+
+ void setDependencyTrail( List<String> dependencyTrail );
+
+ void setScope( String scope );
+
+ VersionRange getVersionRange();
+
+ void setVersionRange( VersionRange newRange );
+
+ void selectVersion( String version );
+
+ void setGroupId( String groupId );
+
+ void setArtifactId( String artifactId );
+
+ boolean isSnapshot();
+
+ void setResolved( boolean resolved );
+
+ boolean isResolved();
+
+ void setResolvedVersion( String version );
+
+ void setArtifactHandler( ArtifactHandler handler );
+
+ boolean isRelease();
+
+ void setRelease( boolean release );
+
+ List<ArtifactVersion> getAvailableVersions();
+
+ void setAvailableVersions( List<ArtifactVersion> versions );
+
+ boolean isOptional();
+
+ void setOptional( boolean optional );
+
+ ArtifactVersion getSelectedVersion()
+ throws OverConstrainedVersionException;
+
+ boolean isSelectedVersionKnown()
+ throws OverConstrainedVersionException;
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java b/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
new file mode 100644
index 0000000..bd76edd
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
@@ -0,0 +1,216 @@
+package org.apache.maven.artifact;
+
+/*
+ * 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 java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+
+import org.apache.commons.lang3.Validate;
+import org.apache.maven.artifact.versioning.VersionRange;
+
+/**
+ * ArtifactUtils
+ */
+public final class ArtifactUtils
+{
+
+ public static boolean isSnapshot( String version )
+ {
+ if ( version != null )
+ {
+ if ( version.regionMatches( true, version.length() - Artifact.SNAPSHOT_VERSION.length(),
+ Artifact.SNAPSHOT_VERSION, 0, Artifact.SNAPSHOT_VERSION.length() ) )
+ {
+ return true;
+ }
+ else if ( Artifact.VERSION_FILE_PATTERN.matcher( version ).matches() )
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static String toSnapshotVersion( String version )
+ {
+ notBlank( version, "version can neither be null, empty nor blank" );
+
+ int lastHyphen = version.lastIndexOf( '-' );
+ if ( lastHyphen > 0 )
+ {
+ int prevHyphen = version.lastIndexOf( '-', lastHyphen - 1 );
+ if ( prevHyphen > 0 )
+ {
+ Matcher m = Artifact.VERSION_FILE_PATTERN.matcher( version );
+ if ( m.matches() )
+ {
+ return m.group( 1 ) + "-" + Artifact.SNAPSHOT_VERSION;
+ }
+ }
+ }
+ return version;
+ }
+
+ public static String versionlessKey( Artifact artifact )
+ {
+ return versionlessKey( artifact.getGroupId(), artifact.getArtifactId() );
+ }
+
+ public static String versionlessKey( String groupId, String artifactId )
+ {
+ notBlank( groupId, "groupId can neither be null, empty nor blank" );
+ notBlank( artifactId, "artifactId can neither be null, empty nor blank" );
+
+ return groupId + ":" + artifactId;
+ }
+
+ public static String key( Artifact artifact )
+ {
+ return key( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
+ }
+
+ public static String key( String groupId, String artifactId, String version )
+ {
+ notBlank( groupId, "groupId can neither be null, empty nor blank" );
+ notBlank( artifactId, "artifactId can neither be null, empty nor blank" );
+ notBlank( version, "version can neither be null, empty nor blank" );
+
+ return groupId + ":" + artifactId + ":" + version;
+ }
+
+ private static void notBlank( String str, String message )
+ {
+ int c = str != null && str.length() > 0 ? str.charAt( 0 ) : 0;
+ if ( ( c < '0' || c > '9' ) && ( c < 'a' || c > 'z' ) )
+ {
+ Validate.notBlank( str, message );
+ }
+ }
+
+ public static Map<String, Artifact> artifactMapByVersionlessId( Collection<Artifact> artifacts )
+ {
+ Map<String, Artifact> artifactMap = new LinkedHashMap<>();
+
+ if ( artifacts != null )
+ {
+ for ( Artifact artifact : artifacts )
+ {
+ artifactMap.put( versionlessKey( artifact ), artifact );
+ }
+ }
+
+ return artifactMap;
+ }
+
+ public static Artifact copyArtifactSafe( Artifact artifact )
+ {
+ return ( artifact != null ) ? copyArtifact( artifact ) : null;
+ }
+
+ public static Artifact copyArtifact( Artifact artifact )
+ {
+ VersionRange range = artifact.getVersionRange();
+
+ // For some reason with the introduction of MNG-1577 we have the case in Yoko where a depMan section has
+ // something like the following:
+ //
+ // <dependencyManagement>
+ // <dependencies>
+ // <!-- Yoko modules -->
+ // <dependency>
+ // <groupId>org.apache.yoko</groupId>
+ // <artifactId>yoko-core</artifactId>
+ // <version>${version}</version>
+ // </dependency>
+ // ...
+ //
+ // And the range is not set so we'll check here and set it. jvz.
+
+ if ( range == null )
+ {
+ range = VersionRange.createFromVersion( artifact.getVersion() );
+ }
+
+ DefaultArtifact clone = new DefaultArtifact( artifact.getGroupId(), artifact.getArtifactId(), range,
+ artifact.getScope(), artifact.getType(), artifact.getClassifier(),
+ artifact.getArtifactHandler(), artifact.isOptional() );
+ clone.setRelease( artifact.isRelease() );
+ clone.setResolvedVersion( artifact.getVersion() );
+ clone.setResolved( artifact.isResolved() );
+ clone.setFile( artifact.getFile() );
+
+ clone.setAvailableVersions( copyList( artifact.getAvailableVersions() ) );
+ if ( artifact.getVersion() != null )
+ {
+ clone.setBaseVersion( artifact.getBaseVersion() );
+ }
+ clone.setDependencyFilter( artifact.getDependencyFilter() );
+ clone.setDependencyTrail( copyList( artifact.getDependencyTrail() ) );
+ clone.setDownloadUrl( artifact.getDownloadUrl() );
+ clone.setRepository( artifact.getRepository() );
+
+ return clone;
+ }
+
+ /** Returns <code>to</code> collection */
+ public static <T extends Collection<Artifact>> T copyArtifacts( Collection<Artifact> from, T to )
+ {
+ for ( Artifact artifact : from )
+ {
+ to.add( ArtifactUtils.copyArtifact( artifact ) );
+ }
+ return to;
+ }
+
+ public static <K, T extends Map<K, Artifact>> T copyArtifacts( Map<K, ? extends Artifact> from, T to )
+ {
+ if ( from != null )
+ {
+ for ( Map.Entry<K, ? extends Artifact> entry : from.entrySet() )
+ {
+ to.put( entry.getKey(), ArtifactUtils.copyArtifact( entry.getValue() ) );
+ }
+ }
+
+ return to;
+ }
+
+ private static <T> List<T> copyList( List<T> original )
+ {
+ List<T> copy = null;
+
+ if ( original != null )
+ {
+ copy = new ArrayList<>();
+
+ if ( !original.isEmpty() )
+ {
+ copy.addAll( original );
+ }
+ }
+
+ return copy;
+ }
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java b/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
new file mode 100644
index 0000000..d63d6c9
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
@@ -0,0 +1,588 @@
+package org.apache.maven.artifact;
+
+/*
+ * 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 java.io.File;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
+import org.apache.maven.artifact.versioning.VersionRange;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * @author Jason van Zyl
+ */
+public class DefaultArtifact
+ implements Artifact
+{
+ private String groupId;
+
+ private String artifactId;
+
+ private String baseVersion;
+
+ private final String type;
+
+ private final String classifier;
+
+ private volatile String scope;
+
+ private volatile File file;
+
+ private ArtifactRepository repository;
+
+ private String downloadUrl;
+
+ private ArtifactFilter dependencyFilter;
+
+ private ArtifactHandler artifactHandler;
+
+ private List<String> dependencyTrail;
+
+ private volatile String version;
+
+ private VersionRange versionRange;
+
+ private volatile boolean resolved;
+
+ private boolean release;
+
+ private List<ArtifactVersion> availableVersions;
+
+ private Map<Object, ArtifactMetadata> metadataMap;
+
+ private boolean optional;
+
+ public DefaultArtifact( String groupId, String artifactId, String version, String scope, String type,
+ String classifier, ArtifactHandler artifactHandler )
+ {
+ this( groupId, artifactId, VersionRange.createFromVersion( version ), scope, type, classifier, artifactHandler,
+ false );
+ }
+
+ public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type,
+ String classifier, ArtifactHandler artifactHandler )
+ {
+ this( groupId, artifactId, versionRange, scope, type, classifier, artifactHandler, false );
+ }
+
+ @SuppressWarnings( "checkstyle:parameternumber" )
+ public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type,
+ String classifier, ArtifactHandler artifactHandler, boolean optional )
+ {
+ this.groupId = groupId;
+
+ this.artifactId = artifactId;
+
+ this.versionRange = versionRange;
+
+ selectVersionFromNewRangeIfAvailable();
+
+ this.artifactHandler = artifactHandler;
+
+ this.scope = scope;
+
+ this.type = type;
+
+ if ( classifier == null )
+ {
+ classifier = artifactHandler.getClassifier();
+ }
+
+ this.classifier = classifier;
+
+ this.optional = optional;
+
+ validateIdentity();
+ }
+
+ private void validateIdentity()
+ {
+ if ( empty( groupId ) )
+ {
+ throw new InvalidArtifactRTException( groupId, artifactId, getVersion(), type,
+ "The groupId cannot be empty." );
+ }
+
+ if ( artifactId == null )
+ {
+ throw new InvalidArtifactRTException( groupId, artifactId, getVersion(), type,
+ "The artifactId cannot be empty." );
+ }
+
+ if ( type == null )
+ {
+ throw new InvalidArtifactRTException( groupId, artifactId, getVersion(), type,
+ "The type cannot be empty." );
+ }
+
+ if ( ( version == null ) && ( versionRange == null ) )
+ {
+ throw new InvalidArtifactRTException( groupId, artifactId, getVersion(), type,
+ "The version cannot be empty." );
+ }
+ }
+
+ private boolean empty( String value )
+ {
+ return ( value == null ) || ( value.trim().length() < 1 );
+ }
+
+ public String getClassifier()
+ {
+ return classifier;
+ }
+
+ public boolean hasClassifier()
+ {
+ return StringUtils.isNotEmpty( classifier );
+ }
+
+ public String getScope()
+ {
+ return scope;
+ }
+
+ public String getGroupId()
+ {
+ return groupId;
+ }
+
+ public String getArtifactId()
+ {
+ return artifactId;
+ }
+
+ public String getVersion()
+ {
+ return version;
+ }
+
+ public void setVersion( String version )
+ {
+ this.version = version;
+ setBaseVersionInternal( version );
+ versionRange = null;
+ }
+
+ public String getType()
+ {
+ return type;
+ }
+
+ public void setFile( File file )
+ {
+ this.file = file;
+ }
+
+ public File getFile()
+ {
+ return file;
+ }
+
+ public ArtifactRepository getRepository()
+ {
+ return repository;
+ }
+
+ public void setRepository( ArtifactRepository repository )
+ {
+ this.repository = repository;
+ }
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
+ public String getId()
+ {
+ return getDependencyConflictId() + ":" + getBaseVersion();
+ }
+
+ public String getDependencyConflictId()
+ {
+ StringBuilder sb = new StringBuilder( 128 );
+ sb.append( getGroupId() );
+ sb.append( ':' );
+ appendArtifactTypeClassifierString( sb );
+ return sb.toString();
+ }
+
+ private void appendArtifactTypeClassifierString( StringBuilder sb )
+ {
+ sb.append( getArtifactId() );
+ sb.append( ':' );
+ sb.append( getType() );
+ if ( hasClassifier() )
+ {
+ sb.append( ':' );
+ sb.append( getClassifier() );
+ }
+ }
+
+ public void addMetadata( ArtifactMetadata metadata )
+ {
+ if ( metadataMap == null )
+ {
+ metadataMap = new HashMap<>();
+ }
+
+ ArtifactMetadata m = metadataMap.get( metadata.getKey() );
+ if ( m != null )
+ {
+ m.merge( metadata );
+ }
+ else
+ {
+ metadataMap.put( metadata.getKey(), metadata );
+ }
+ }
+
+ public Collection<ArtifactMetadata> getMetadataList()
+ {
+ if ( metadataMap == null )
+ {
+ return Collections.emptyList();
+ }
+
+ return Collections.unmodifiableCollection( metadataMap.values() );
+ }
+
+ // ----------------------------------------------------------------------
+ // Object overrides
+ // ----------------------------------------------------------------------
+
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder();
+ if ( getGroupId() != null )
+ {
+ sb.append( getGroupId() );
+ sb.append( ':' );
+ }
+ appendArtifactTypeClassifierString( sb );
+ sb.append( ':' );
+ if ( getBaseVersionInternal() != null )
+ {
+ sb.append( getBaseVersionInternal() );
+ }
+ else
+ {
+ sb.append( versionRange.toString() );
+ }
+ if ( scope != null )
+ {
+ sb.append( ':' );
+ sb.append( scope );
+ }
+ return sb.toString();
+ }
+
+ public int hashCode()
+ {
+ int result = 17;
+ result = 37 * result + groupId.hashCode();
+ result = 37 * result + artifactId.hashCode();
+ result = 37 * result + type.hashCode();
+ if ( version != null )
+ {
+ result = 37 * result + version.hashCode();
+ }
+ result = 37 * result + ( classifier != null ? classifier.hashCode() : 0 );
+ return result;
+ }
+
+ public boolean equals( Object o )
+ {
+ if ( o == this )
+ {
+ return true;
+ }
+
+ if ( !( o instanceof Artifact ) )
+ {
+ return false;
+ }
+
+ Artifact a = (Artifact) o;
+
+ if ( !a.getGroupId().equals( groupId ) )
+ {
+ return false;
+ }
+ else if ( !a.getArtifactId().equals( artifactId ) )
+ {
+ return false;
+ }
+ else if ( !a.getVersion().equals( version ) )
+ {
+ return false;
+ }
+ else if ( !a.getType().equals( type ) )
+ {
+ return false;
+ }
+ else if ( a.getClassifier() == null ? classifier != null : !a.getClassifier().equals( classifier ) )
+ {
+ return false;
+ }
+
+ // We don't consider the version range in the comparison, just the resolved version
+
+ return true;
+ }
+
+ public String getBaseVersion()
+ {
+ if ( baseVersion == null && version != null )
+ {
+ setBaseVersionInternal( version );
+ }
+
+ return baseVersion;
+ }
+
+ protected String getBaseVersionInternal()
+ {
+ if ( ( baseVersion == null ) && ( version != null ) )
+ {
+ setBaseVersionInternal( version );
+ }
+
+ return baseVersion;
+ }
+
+ public void setBaseVersion( String baseVersion )
+ {
+ setBaseVersionInternal( baseVersion );
+ }
+
+ protected void setBaseVersionInternal( String baseVersion )
+ {
+ this.baseVersion = ArtifactUtils.toSnapshotVersion( baseVersion );
+ }
+
+ public int compareTo( Artifact a )
+ {
+ int result = groupId.compareTo( a.getGroupId() );
+ if ( result == 0 )
+ {
+ result = artifactId.compareTo( a.getArtifactId() );
+ if ( result == 0 )
+ {
+ result = type.compareTo( a.getType() );
+ if ( result == 0 )
+ {
+ if ( classifier == null )
+ {
+ if ( a.getClassifier() != null )
+ {
+ result = 1;
+ }
+ }
+ else
+ {
+ if ( a.getClassifier() != null )
+ {
+ result = classifier.compareTo( a.getClassifier() );
+ }
+ else
+ {
+ result = -1;
+ }
+ }
+ if ( result == 0 )
+ {
+ // We don't consider the version range in the comparison, just the resolved version
+ result = new DefaultArtifactVersion( version ).compareTo(
+ new DefaultArtifactVersion( a.getVersion() ) );
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ public void updateVersion( String version, ArtifactRepository localRepository )
+ {
+ setResolvedVersion( version );
+ setFile( new File( localRepository.getBasedir(), localRepository.pathOf( this ) ) );
+ }
+
+ public String getDownloadUrl()
+ {
+ return downloadUrl;
+ }
+
+ public void setDownloadUrl( String downloadUrl )
+ {
+ this.downloadUrl = downloadUrl;
+ }
+
+ public ArtifactFilter getDependencyFilter()
+ {
+ return dependencyFilter;
+ }
+
+ public void setDependencyFilter( ArtifactFilter artifactFilter )
+ {
+ dependencyFilter = artifactFilter;
+ }
+
+ public ArtifactHandler getArtifactHandler()
+ {
+ return artifactHandler;
+ }
+
+ public List<String> getDependencyTrail()
+ {
+ return dependencyTrail;
+ }
+
+ public void setDependencyTrail( List<String> dependencyTrail )
+ {
+ this.dependencyTrail = dependencyTrail;
+ }
+
+ public void setScope( String scope )
+ {
+ this.scope = scope;
+ }
+
+ public VersionRange getVersionRange()
+ {
+ return versionRange;
+ }
+
+ public void setVersionRange( VersionRange versionRange )
+ {
+ this.versionRange = versionRange;
+ selectVersionFromNewRangeIfAvailable();
+ }
+
+ private void selectVersionFromNewRangeIfAvailable()
+ {
+ if ( ( versionRange != null ) && ( versionRange.getRecommendedVersion() != null ) )
+ {
+ selectVersion( versionRange.getRecommendedVersion().toString() );
+ }
+ else
+ {
+ version = null;
+ baseVersion = null;
+ }
+ }
+
+ public void selectVersion( String version )
+ {
+ this.version = version;
+ setBaseVersionInternal( version );
+ }
+
+ public void setGroupId( String groupId )
+ {
+ this.groupId = groupId;
+ }
+
+ public void setArtifactId( String artifactId )
+ {
+ this.artifactId = artifactId;
+ }
+
+ public boolean isSnapshot()
+ {
+ return getBaseVersion() != null
+ && ( getBaseVersion().endsWith( SNAPSHOT_VERSION ) || getBaseVersion().equals( LATEST_VERSION ) );
+ }
+
+ public void setResolved( boolean resolved )
+ {
+ this.resolved = resolved;
+ }
+
+ public boolean isResolved()
+ {
+ return resolved;
+ }
+
+ public void setResolvedVersion( String version )
+ {
+ this.version = version;
+ // retain baseVersion
+ }
+
+ public void setArtifactHandler( ArtifactHandler artifactHandler )
+ {
+ this.artifactHandler = artifactHandler;
+ }
+
+ public void setRelease( boolean release )
+ {
+ this.release = release;
+ }
+
+ public boolean isRelease()
+ {
+ return release;
+ }
+
+ public List<ArtifactVersion> getAvailableVersions()
+ {
+ return availableVersions;
+ }
+
+ public void setAvailableVersions( List<ArtifactVersion> availableVersions )
+ {
+ this.availableVersions = availableVersions;
+ }
+
+ public boolean isOptional()
+ {
+ return optional;
+ }
+
+ public ArtifactVersion getSelectedVersion()
+ throws OverConstrainedVersionException
+ {
+ return versionRange.getSelectedVersion( this );
+ }
+
+ public boolean isSelectedVersionKnown()
+ throws OverConstrainedVersionException
+ {
+ return versionRange.isSelectedVersionKnown( this );
+ }
+
+ public void setOptional( boolean optional )
+ {
+ this.optional = optional;
+ }
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/InvalidArtifactRTException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/InvalidArtifactRTException.java
new file mode 100644
index 0000000..adf656d
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/InvalidArtifactRTException.java
@@ -0,0 +1,100 @@
+package org.apache.maven.artifact;
+
+/*
+ * 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.
+ */
+
+/**
+ * Exception thrown when the identity of an artifact can not be established,
+ * eg. one of groupId, artifactId, version or type is null.
+ */
+public class InvalidArtifactRTException
+ extends RuntimeException
+{
+
+ private final String groupId;
+ private final String artifactId;
+ private final String version;
+ private final String type;
+ private final String baseMessage;
+
+ public InvalidArtifactRTException( String groupId,
+ String artifactId,
+ String version,
+ String type,
+ String message )
+ {
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.version = version;
+ this.type = type;
+ this.baseMessage = message;
+ }
+
+ public InvalidArtifactRTException( String groupId,
+ String artifactId,
+ String version,
+ String type,
+ String message,
+ Throwable cause )
+ {
+ super( cause );
+
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.version = version;
+ this.type = type;
+ this.baseMessage = message;
+ }
+
+ public String getMessage()
+ {
+ return "For artifact {" + getArtifactKey() + "}: " + getBaseMessage();
+ }
+
+ public String getBaseMessage()
+ {
+ return baseMessage;
+ }
+
+ public String getArtifactId()
+ {
+ return artifactId;
+ }
+
+ public String getGroupId()
+ {
+ return groupId;
+ }
+
+ public String getType()
+ {
+ return type;
+ }
+
+ public String getVersion()
+ {
+ return version;
+ }
+
+ public String getArtifactKey()
+ {
+ return groupId + ":" + artifactId + ":" + version + ":" + type;
+ }
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/handler/ArtifactHandler.java b/maven-artifact/src/main/java/org/apache/maven/artifact/handler/ArtifactHandler.java
new file mode 100644
index 0000000..cd07d8a
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/handler/ArtifactHandler.java
@@ -0,0 +1,58 @@
+package org.apache.maven.artifact.handler;
+
+/*
+ * 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.
+ */
+
+/**
+ * An artifact handler defines for a dependency type, defined as Plexus role:<ul>
+ * <li>extension and classifier, to be able to download the file,</li>
+ * <li>information on how to use the artifact: whether to add it to the classpath, or to take into account its
+ * dependencies.</li>
+ * </ul>
+ *
+ * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
+ */
+public interface ArtifactHandler
+{
+ String ROLE = ArtifactHandler.class.getName();
+
+ /**
+ * Get the file extension associated to the file represented by the dependency type.
+ *
+ * @return the file extension
+ */
+ String getExtension();
+
+ String getDirectory();
+
+ /**
+ * Get the classifier associated to the dependency type.
+ *
+ * @return the classifier
+ */
+ String getClassifier();
+
+ String getPackaging();
+
+ boolean isIncludesDependencies();
+
+ String getLanguage();
+
+ boolean isAddedToClasspath();
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java b/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java
new file mode 100644
index 0000000..7bf8c61
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java
@@ -0,0 +1,30 @@
+package org.apache.maven.artifact.metadata;
+
+/*
+ * 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.
+ */
+
+/**
+ * Contains metadata about an artifact, and methods to retrieve/store it from an artifact repository.
+ */
+@Deprecated
+public interface ArtifactMetadata
+ extends org.apache.maven.repository.legacy.metadata.ArtifactMetadata
+{
+ void merge( ArtifactMetadata metadata );
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java
new file mode 100644
index 0000000..0b33345
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java
@@ -0,0 +1,134 @@
+package org.apache.maven.artifact.repository;
+
+/*
+ * 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 java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.repository.Proxy;
+
+/**
+ * Abstraction of an artifact repository. Artifact repositories can be remote, local, or even build reactor or
+ * IDE workspace.
+ */
+public interface ArtifactRepository
+{
+ String pathOf( Artifact artifact );
+
+ String pathOfRemoteRepositoryMetadata( ArtifactMetadata artifactMetadata );
+
+ String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository );
+
+ String getUrl();
+
+ void setUrl( String url );
+
+ String getBasedir();
+
+ String getProtocol();
+
+ String getId();
+
+ void setId( String id );
+
+ ArtifactRepositoryPolicy getSnapshots();
+
+ void setSnapshotUpdatePolicy( ArtifactRepositoryPolicy policy );
+
+ ArtifactRepositoryPolicy getReleases();
+
+ void setReleaseUpdatePolicy( ArtifactRepositoryPolicy policy );
+
+ ArtifactRepositoryLayout getLayout();
+
+ void setLayout( ArtifactRepositoryLayout layout );
+
+ String getKey();
+
+ @Deprecated
+ boolean isUniqueVersion();
+
+ @Deprecated
+ boolean isBlacklisted();
+
+ @Deprecated
+ void setBlacklisted( boolean blackListed );
+
+ //
+ // New interface methods for the repository system.
+ //
+ /**
+ *
+ * @param artifact
+ * @since 3.0-alpha-3
+ */
+ Artifact find( Artifact artifact );
+
+ /**
+ * Finds the versions of the specified artifact that are available in this repository.
+ *
+ * @param artifact The artifact whose available versions should be determined, must not be {@code null}.
+ * @return The available versions of the artifact or an empty list if none, never {@code null}.
+ * @since 3.0-alpha-3
+ */
+ List<String> findVersions( Artifact artifact );
+
+ /**
+ * Indicates whether this repository is backed by actual projects. For instance, the build reactor or IDE workspace
+ * are examples of such repositories.
+ *
+ * @return {@code true} if the repository is backed by actual projects, {@code false} otherwise.
+ * @since 3.0-beta-1
+ */
+ boolean isProjectAware();
+
+ /**
+ * @since 3.0-alpha-3
+ */
+ void setAuthentication( Authentication authentication );
+ /**
+ * @since 3.0-alpha-3
+ */
+ Authentication getAuthentication();
+
+ /**
+ * @since 3.0-alpha-3
+ */
+ void setProxy( Proxy proxy );
+ /**
+ * @since 3.0-alpha-3
+ */
+ Proxy getProxy();
+
+ /**
+ * @since 3.0.3
+ * @return the repositories mirrored by the actual one
+ */
+ List<ArtifactRepository> getMirroredRepositories();
+
+ /**
+ * @since 3.0.3
+ * @param mirroredRepositories the repositories that the actual one mirrors
+ */
+ void setMirroredRepositories( List<ArtifactRepository> mirroredRepositories );
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
new file mode 100644
index 0000000..5ce317f
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
@@ -0,0 +1,223 @@
+package org.apache.maven.artifact.repository;
+
+/*
+ * 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 java.util.Calendar;
+import java.util.Date;
+
+/**
+ * Describes a set of policies for a repository to use under certain conditions.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public class ArtifactRepositoryPolicy
+{
+ public static final String UPDATE_POLICY_NEVER = "never";
+
+ public static final String UPDATE_POLICY_ALWAYS = "always";
+
+ public static final String UPDATE_POLICY_DAILY = "daily";
+
+ public static final String UPDATE_POLICY_INTERVAL = "interval";
+
+ public static final String CHECKSUM_POLICY_FAIL = "fail";
+
+ public static final String CHECKSUM_POLICY_WARN = "warn";
+
+ public static final String CHECKSUM_POLICY_IGNORE = "ignore";
+
+ private boolean enabled;
+
+ private String updatePolicy;
+
+ private String checksumPolicy;
+
+ public ArtifactRepositoryPolicy()
+ {
+ this( true, null, null );
+ }
+
+ public ArtifactRepositoryPolicy( ArtifactRepositoryPolicy policy )
+ {
+ this( policy.isEnabled(), policy.getUpdatePolicy(), policy.getChecksumPolicy() );
+ }
+
+ public ArtifactRepositoryPolicy( boolean enabled, String updatePolicy, String checksumPolicy )
+ {
+ this.enabled = enabled;
+
+ if ( updatePolicy == null )
+ {
+ updatePolicy = UPDATE_POLICY_DAILY;
+ }
+ this.updatePolicy = updatePolicy;
+
+ if ( checksumPolicy == null )
+ {
+ checksumPolicy = CHECKSUM_POLICY_WARN;
+ }
+ this.checksumPolicy = checksumPolicy;
+ }
+
+ public void setEnabled( boolean enabled )
+ {
+ this.enabled = enabled;
+ }
+
+ public void setUpdatePolicy( String updatePolicy )
+ {
+ if ( updatePolicy != null )
+ {
+ this.updatePolicy = updatePolicy;
+ }
+ }
+
+ public void setChecksumPolicy( String checksumPolicy )
+ {
+ if ( checksumPolicy != null )
+ {
+ this.checksumPolicy = checksumPolicy;
+ }
+ }
+
+ public boolean isEnabled()
+ {
+ return enabled;
+ }
+
+ public String getUpdatePolicy()
+ {
+ return updatePolicy;
+ }
+
+ public String getChecksumPolicy()
+ {
+ return checksumPolicy;
+ }
+
+ public boolean checkOutOfDate( Date lastModified )
+ {
+ boolean checkForUpdates = false;
+
+ if ( UPDATE_POLICY_ALWAYS.equals( updatePolicy ) )
+ {
+ checkForUpdates = true;
+ }
+ else if ( UPDATE_POLICY_DAILY.equals( updatePolicy ) )
+ {
+ // Get local midnight boundary
+ Calendar cal = Calendar.getInstance();
+
+ cal.set( Calendar.HOUR_OF_DAY, 0 );
+ cal.set( Calendar.MINUTE, 0 );
+ cal.set( Calendar.SECOND, 0 );
+ cal.set( Calendar.MILLISECOND, 0 );
+
+ if ( cal.getTime().after( lastModified ) )
+ {
+ checkForUpdates = true;
+ }
+ }
+ else if ( updatePolicy.startsWith( UPDATE_POLICY_INTERVAL ) )
+ {
+ String s = updatePolicy.substring( UPDATE_POLICY_INTERVAL.length() + 1 );
+ int minutes = Integer.parseInt( s );
+ Calendar cal = Calendar.getInstance();
+ cal.add( Calendar.MINUTE, -minutes );
+ if ( cal.getTime().after( lastModified ) )
+ {
+ checkForUpdates = true;
+ }
+ }
+ // else assume "never"
+ return checkForUpdates;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuilder buffer = new StringBuilder( 64 );
+ buffer.append( "{enabled=" );
+ buffer.append( enabled );
+ buffer.append( ", checksums=" );
+ buffer.append( checksumPolicy );
+ buffer.append( ", updates=" );
+ buffer.append( updatePolicy );
+ buffer.append( '}' );
+ return buffer.toString();
+ }
+
+ public void merge( ArtifactRepositoryPolicy policy )
+ {
+ if ( policy != null && policy.isEnabled() )
+ {
+ setEnabled( true );
+
+ if ( ordinalOfCksumPolicy( policy.getChecksumPolicy() ) < ordinalOfCksumPolicy( getChecksumPolicy() ) )
+ {
+ setChecksumPolicy( policy.getChecksumPolicy() );
+ }
+
+ if ( ordinalOfUpdatePolicy( policy.getUpdatePolicy() ) < ordinalOfUpdatePolicy( getUpdatePolicy() ) )
+ {
+ setUpdatePolicy( policy.getUpdatePolicy() );
+ }
+ }
+ }
+
+ private int ordinalOfCksumPolicy( String policy )
+ {
+ if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( policy ) )
+ {
+ return 2;
+ }
+ else if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( policy ) )
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+ }
+
+ @SuppressWarnings( "checkstyle:magicnumber" )
+ private int ordinalOfUpdatePolicy( String policy )
+ {
+ if ( ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY.equals( policy ) )
+ {
+ return 1440;
+ }
+ else if ( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS.equals( policy ) )
+ {
+ return 0;
+ }
+ else if ( policy != null && policy.startsWith( ArtifactRepositoryPolicy.UPDATE_POLICY_INTERVAL ) )
+ {
+ String s = policy.substring( UPDATE_POLICY_INTERVAL.length() + 1 );
+ return Integer.parseInt( s );
+ }
+ else
+ {
+ return Integer.MAX_VALUE;
+ }
+ }
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/repository/Authentication.java b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/Authentication.java
new file mode 100644
index 0000000..f02d1c5
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/Authentication.java
@@ -0,0 +1,129 @@
+package org.apache.maven.artifact.repository;
+
+/*
+ * 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.
+ */
+
+/**
+ * Authentication
+ */
+public class Authentication
+{
+
+ private String privateKey;
+
+ private String passphrase;
+
+ public Authentication( String userName, String password )
+ {
+ this.username = userName;
+ this.password = password;
+ }
+
+ /**
+ * Username used to login to the host
+ */
+ private String username;
+
+ /**
+ * Password associated with the login
+ */
+ private String password;
+
+ /**
+ * Get the user's password which is used when connecting to the repository.
+ *
+ * @return password of user
+ */
+ public String getPassword()
+ {
+ return password;
+ }
+
+ /**
+ * Set the user's password which is used when connecting to the repository.
+ *
+ * @param password password of the user
+ */
+ public void setPassword( String password )
+ {
+ this.password = password;
+ }
+
+ /**
+ * Get the username used to access the repository.
+ *
+ * @return username at repository
+ */
+ public String getUsername()
+ {
+ return username;
+ }
+
+ /**
+ * Set username used to access the repository.
+ *
+ * @param userName the username used to access repository
+ */
+ public void setUsername( final String userName )
+ {
+ this.username = userName;
+ }
+
+ /**
+ * Get the passphrase of the private key file. The passphrase is used only when host/protocol supports
+ * authentication via exchange of private/public keys and private key was used for authentication.
+ *
+ * @return passphrase of the private key file
+ */
+ public String getPassphrase()
+ {
+ return passphrase;
+ }
+
+ /**
+ * Set the passphrase of the private key file.
+ *
+ * @param passphrase passphrase of the private key file
+ */
+ public void setPassphrase( final String passphrase )
+ {
+ this.passphrase = passphrase;
+ }
+
+ /**
+ * Get the absolute path to the private key file.
+ *
+ * @return absolute path to private key
+ */
+ public String getPrivateKey()
+ {
+ return privateKey;
+ }
+
+ /**
+ * Set the absolute path to private key file.
+ *
+ * @param privateKey path to private key in local file system
+ */
+ public void setPrivateKey( final String privateKey )
+ {
+ this.privateKey = privateKey;
+ }
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout.java b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout.java
new file mode 100644
index 0000000..2a18c86
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout.java
@@ -0,0 +1,38 @@
+package org.apache.maven.artifact.repository.layout;
+
+/*
+ * 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 org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+/** @author jdcasey */
+public interface ArtifactRepositoryLayout
+{
+ String ROLE = ArtifactRepositoryLayout.class.getName();
+
+ String getId();
+
+ String pathOf( Artifact artifact );
+
+ String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository );
+
+ String pathOfRemoteRepositoryMetadata( ArtifactMetadata metadata );
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout2.java b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout2.java
new file mode 100644
index 0000000..f6bc573
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout2.java
@@ -0,0 +1,34 @@
+package org.apache.maven.artifact.repository.layout;
+
+/*
+ * 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 org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+
+/**
+ * ArtifactRepositoryLayout2
+ */
+public interface ArtifactRepositoryLayout2
+ extends ArtifactRepositoryLayout
+{
+
+ ArtifactRepository newMavenArtifactRepository( String id, String url, ArtifactRepositoryPolicy snapshots,
+ ArtifactRepositoryPolicy releases );
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataStoreException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataStoreException.java
new file mode 100644
index 0000000..3848852
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataStoreException.java
@@ -0,0 +1,40 @@
+package org.apache.maven.artifact.repository.metadata;
+
+/*
+ * 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.
+ */
+
+/**
+ * Problem storing the repository metadata in the local repository.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public class RepositoryMetadataStoreException
+ extends Exception
+{
+ public RepositoryMetadataStoreException( String message )
+ {
+ super( message );
+ }
+
+ public RepositoryMetadataStoreException( String message,
+ Exception e )
+ {
+ super( message, e );
+ }
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/AbstractArtifactResolutionException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/AbstractArtifactResolutionException.java
new file mode 100644
index 0000000..a2917b5
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/AbstractArtifactResolutionException.java
@@ -0,0 +1,347 @@
+package org.apache.maven.artifact.resolver;
+
+/*
+ * 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 java.util.Iterator;
+import java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+
+/**
+ * Base class for artifact resolution exceptions.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public class AbstractArtifactResolutionException
+ extends Exception
+{
+ private String groupId;
+
+ private String artifactId;
+
+ private String version;
+
+ private String type;
+
+ private String classifier;
+
+ private Artifact artifact;
+
+ private List<ArtifactRepository> remoteRepositories;
+
+ private final String originalMessage;
+
+ private final String path;
+
+ static final String LS = System.lineSeparator();
+
+ @SuppressWarnings( "checkstyle:parameternumber" )
+ protected AbstractArtifactResolutionException( String message,
+ String groupId,
+ String artifactId,
+ String version,
+ String type,
+ String classifier,
+ List<ArtifactRepository> remoteRepositories,
+ List<String> path )
+ {
+ this( message, groupId, artifactId, version, type, classifier, remoteRepositories, path, null );
+ }
+
+ @SuppressWarnings( "checkstyle:parameternumber" )
+ protected AbstractArtifactResolutionException( String message,
+ String groupId,
+ String artifactId,
+ String version,
+ String type,
+ String classifier,
+ List<ArtifactRepository> remoteRepositories,
+ List<String> path,
+ Throwable t )
+ {
+ super( constructMessageBase( message, groupId, artifactId, version, type, remoteRepositories, path ), t );
+
+ this.originalMessage = message;
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.type = type;
+ this.classifier = classifier;
+ this.version = version;
+ this.remoteRepositories = remoteRepositories;
+ this.path = constructArtifactPath( path, "" );
+ }
+
+ protected AbstractArtifactResolutionException( String message,
+ Artifact artifact )
+ {
+ this( message, artifact, null );
+ }
+
+ protected AbstractArtifactResolutionException( String message,
+ Artifact artifact,
+ List<ArtifactRepository> remoteRepositories )
+ {
+ this( message, artifact, remoteRepositories, null );
+ }
+
+ protected AbstractArtifactResolutionException( String message,
+ Artifact artifact,
+ List<ArtifactRepository> remoteRepositories,
+ Throwable t )
+ {
+ this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(),
+ artifact.getClassifier(), remoteRepositories, artifact.getDependencyTrail(), t );
+ this.artifact = artifact;
+ }
+
+ public Artifact getArtifact()
+ {
+ return artifact;
+ }
+
+ public String getGroupId()
+ {
+ return groupId;
+ }
+
+ public String getArtifactId()
+ {
+ return artifactId;
+ }
+
+ public String getVersion()
+ {
+ return version;
+ }
+
+ public String getType()
+ {
+ return type;
+ }
+
+ /** @return the classifier */
+ public String getClassifier()
+ {
+ return this.classifier;
+ }
+
+ /** @return the path */
+ public String getPath()
+ {
+ return this.path;
+ }
+
+ public List<ArtifactRepository> getRemoteRepositories()
+ {
+ return remoteRepositories;
+ }
+
+ public String getOriginalMessage()
+ {
+ return originalMessage;
+ }
+
+ protected static String constructArtifactPath( List<String> path,
+ String indentation )
+ {
+ StringBuilder sb = new StringBuilder();
+
+ if ( path != null )
+ {
+ sb.append( LS );
+ sb.append( indentation );
+ sb.append( "Path to dependency: " );
+ sb.append( LS );
+ int num = 1;
+ for ( Iterator<String> i = path.iterator(); i.hasNext(); num++ )
+ {
+ sb.append( indentation );
+ sb.append( '\t' );
+ sb.append( num );
+ sb.append( ") " );
+ sb.append( i.next() );
+ sb.append( LS );
+ }
+ }
+
+ return sb.toString();
+ }
+
+ private static String constructMessageBase( String message,
+ String groupId,
+ String artifactId,
+ String version,
+ String type,
+ List<ArtifactRepository> remoteRepositories,
+ List<String> path )
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append( message );
+
+ if ( message == null || !message.contains( "from the specified remote repositories:" ) )
+ {
+ sb.append( LS );
+ sb.append( " " ).append( groupId ).append( ':' ).append( artifactId ).append( ':' ).append( type ).append(
+ ':' ).append( version );
+ sb.append( LS );
+ if ( remoteRepositories != null )
+ {
+ sb.append( LS );
+ sb.append( "from the specified remote repositories:" );
+ sb.append( LS ).append( " " );
+
+ if ( remoteRepositories.isEmpty() )
+ {
+ sb.append( "(none)" );
+ }
+
+ for ( Iterator<ArtifactRepository> i = remoteRepositories.iterator(); i.hasNext(); )
+ {
+ ArtifactRepository remoteRepository = i.next();
+
+ sb.append( remoteRepository.getId() );
+ sb.append( " (" );
+ sb.append( remoteRepository.getUrl() );
+
+ ArtifactRepositoryPolicy releases = remoteRepository.getReleases();
+ if ( releases != null )
+ {
+ sb.append( ", releases=" ).append( releases.isEnabled() );
+ }
+
+ ArtifactRepositoryPolicy snapshots = remoteRepository.getSnapshots();
+ if ( snapshots != null )
+ {
+ sb.append( ", snapshots=" ).append( snapshots.isEnabled() );
+ }
+
+ sb.append( ')' );
+ if ( i.hasNext() )
+ {
+ sb.append( ',' ).append( LS ).append( " " );
+ }
+ }
+ }
+
+ sb.append( constructArtifactPath( path, "" ) );
+ sb.append( LS );
+ }
+
+ return sb.toString();
+ }
+
+ @SuppressWarnings( "checkstyle:parameternumber" )
+ protected static String constructMissingArtifactMessage( String message,
+ String indentation,
+ String groupId,
+ String artifactId,
+ String version,
+ String type,
+ String classifier,
+ String downloadUrl,
+ List<String> path )
+ {
+ StringBuilder sb = new StringBuilder( message );
+
+ if ( !"pom".equals( type ) )
+ {
+ if ( downloadUrl != null )
+ {
+ sb.append( LS );
+ sb.append( LS );
+ sb.append( indentation );
+ sb.append( "Try downloading the file manually from: " );
+ sb.append( LS );
+ sb.append( indentation );
+ sb.append( " " );
+ sb.append( downloadUrl );
+ }
+ else
+ {
+ sb.append( LS );
+ sb.append( LS );
+ sb.append( indentation );
+ sb.append( "Try downloading the file manually from the project website." );
+ }
+
+ sb.append( LS );
+ sb.append( LS );
+ sb.append( indentation );
+ sb.append( "Then, install it using the command: " );
+ sb.append( LS );
+ sb.append( indentation );
+ sb.append( " mvn install:install-file -DgroupId=" );
+ sb.append( groupId );
+ sb.append( " -DartifactId=" );
+ sb.append( artifactId );
+ sb.append( " -Dversion=" );
+ sb.append( version );
+
+ //insert classifier only if it was used in the artifact
+ if ( classifier != null && !classifier.equals( "" ) )
+ {
+ sb.append( " -Dclassifier=" );
+ sb.append( classifier );
+ }
+ sb.append( " -Dpackaging=" );
+ sb.append( type );
+ sb.append( " -Dfile=/path/to/file" );
+ sb.append( LS );
+
+ // If people want to deploy it
+ sb.append( LS );
+ sb.append( indentation );
+ sb.append( "Alternatively, if you host your own repository you can deploy the file there: " );
+ sb.append( LS );
+ sb.append( indentation );
+ sb.append( " mvn deploy:deploy-file -DgroupId=" );
+ sb.append( groupId );
+ sb.append( " -DartifactId=" );
+ sb.append( artifactId );
+ sb.append( " -Dversion=" );
+ sb.append( version );
+
+ //insert classifier only if it was used in the artifact
+ if ( classifier != null && !classifier.equals( "" ) )
+ {
+ sb.append( " -Dclassifier=" );
+ sb.append( classifier );
+ }
+ sb.append( " -Dpackaging=" );
+ sb.append( type );
+ sb.append( " -Dfile=/path/to/file" );
+ sb.append( " -Durl=[url] -DrepositoryId=[id]" );
+ sb.append( LS );
+ }
+
+ sb.append( constructArtifactPath( path, indentation ) );
+ sb.append( LS );
+
+ return sb.toString();
+ }
+
+ public String getArtifactPath()
+ {
+ return path;
+ }
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java
new file mode 100644
index 0000000..76f7b58
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java
@@ -0,0 +1,85 @@
+package org.apache.maven.artifact.resolver;
+
+/*
+ * 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 java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+/**
+ * @author Jason van Zyl
+ */
+public class ArtifactNotFoundException
+ extends AbstractArtifactResolutionException
+{
+ private String downloadUrl;
+
+ protected ArtifactNotFoundException( String message, Artifact artifact,
+ List<ArtifactRepository> remoteRepositories )
+ {
+ super( message, artifact, remoteRepositories );
+ }
+
+ public ArtifactNotFoundException( String message, Artifact artifact )
+ {
+ this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(),
+ artifact.getClassifier(), null, artifact.getDownloadUrl(), artifact.getDependencyTrail() );
+ }
+
+ protected ArtifactNotFoundException( String message, Artifact artifact,
+ List<ArtifactRepository> remoteRepositories, Throwable cause )
+ {
+ this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(),
+ artifact.getClassifier(), remoteRepositories, artifact.getDownloadUrl(), artifact.getDependencyTrail(),
+ cause );
+ }
+
+ @SuppressWarnings( "checkstyle:parameternumber" )
+ public ArtifactNotFoundException( String message, String groupId, String artifactId, String version, String type,
+ String classifier, List<ArtifactRepository> remoteRepositories,
+ String downloadUrl, List<String> path, Throwable cause )
+ {
+ super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier,
+ downloadUrl, path ), groupId, artifactId, version, type, classifier,
+ remoteRepositories, null, cause );
+
+ this.downloadUrl = downloadUrl;
+ }
+
+ @SuppressWarnings( "checkstyle:parameternumber" )
+ private ArtifactNotFoundException( String message, String groupId, String artifactId, String version, String type,
+ String classifier, List<ArtifactRepository> remoteRepositories,
+ String downloadUrl, List<String> path )
+ {
+ super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier,
+ downloadUrl, path ), groupId, artifactId, version, type, classifier,
+ remoteRepositories, null );
+
+ this.downloadUrl = downloadUrl;
+ }
+
+ public String getDownloadUrl()
+ {
+ return downloadUrl;
+ }
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java
new file mode 100644
index 0000000..074d812
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java
@@ -0,0 +1,68 @@
+package org.apache.maven.artifact.resolver;
+
+/*
+ * 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 java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+/**
+ * @author Jason van Zyl
+ */
+public class ArtifactResolutionException
+ extends AbstractArtifactResolutionException
+{
+ @SuppressWarnings( "checkstyle:parameternumber" )
+ public ArtifactResolutionException( String message, String groupId, String artifactId, String version, String type,
+ String classifier, List<ArtifactRepository> remoteRepositories,
+ List<String> path, Throwable t )
+ {
+ super( message, groupId, artifactId, version, type, classifier, remoteRepositories, path, t );
+ }
+
+ public ArtifactResolutionException( String message, String groupId, String artifactId, String version, String type,
+ String classifier, Throwable t )
+ {
+ super( message, groupId, artifactId, version, type, classifier, null, null, t );
+ }
+
+ public ArtifactResolutionException( String message, Artifact artifact )
+ {
+ super( message, artifact );
+ }
+
+ public ArtifactResolutionException( String message, Artifact artifact, List<ArtifactRepository> remoteRepositories )
+ {
+ super( message, artifact, remoteRepositories );
+ }
+
+ public ArtifactResolutionException( String message, Artifact artifact, Throwable cause )
+ {
+ super( message, artifact, null, cause );
+ }
+
+ public ArtifactResolutionException( String message, Artifact artifact, List<ArtifactRepository> remoteRepositories,
+ Throwable cause )
+ {
+ super( message, artifact, remoteRepositories, cause );
+ }
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/CyclicDependencyException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/CyclicDependencyException.java
new file mode 100644
index 0000000..bbc6733
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/CyclicDependencyException.java
@@ -0,0 +1,45 @@
+package org.apache.maven.artifact.resolver;
+
+/*
+ * 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 org.apache.maven.artifact.Artifact;
+
+/**
+ * Indicates a cycle in the dependency graph.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public class CyclicDependencyException
+ extends ArtifactResolutionException
+{
+ private Artifact artifact;
+
+ public CyclicDependencyException( String message,
+ Artifact artifact )
+ {
+ super( message, artifact );
+ this.artifact = artifact;
+ }
+
+ public Artifact getArtifact()
+ {
+ return artifact;
+ }
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/MultipleArtifactsNotFoundException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/MultipleArtifactsNotFoundException.java
new file mode 100644
index 0000000..d08dfd5
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/MultipleArtifactsNotFoundException.java
@@ -0,0 +1,123 @@
+package org.apache.maven.artifact.resolver;
+
+/*
+ * 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 java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+/**
+ * Exception caused when one or more artifacts can not be resolved because they are not found in the
+ * local or remote repositories.
+ */
+public class MultipleArtifactsNotFoundException
+ extends ArtifactResolutionException
+{
+ private final List<Artifact> resolvedArtifacts;
+ private final List<Artifact> missingArtifacts;
+
+ /** @deprecated use {@link #MultipleArtifactsNotFoundException(Artifact, List, List, List)} */
+ @Deprecated
+ public MultipleArtifactsNotFoundException( Artifact originatingArtifact,
+ List<Artifact> missingArtifacts,
+ List<ArtifactRepository> remoteRepositories )
+ {
+ this( originatingArtifact, new ArrayList<>(), missingArtifacts, remoteRepositories );
+ }
+
+ /**
+ * Create an instance of the exception with allrequired information.
+ *
+ * @param originatingArtifact the artifact that was being resolved
+ * @param resolvedArtifacts artifacts that could be resolved
+ * @param missingArtifacts artifacts that could not be resolved
+ * @param remoteRepositories remote repositories where the missing artifacts were not found
+ */
+ public MultipleArtifactsNotFoundException( Artifact originatingArtifact,
+ List<Artifact> resolvedArtifacts,
+ List<Artifact> missingArtifacts,
+ List<ArtifactRepository> remoteRepositories )
+ {
+ super( constructMessage( missingArtifacts ), originatingArtifact, remoteRepositories );
+ this.resolvedArtifacts = resolvedArtifacts;
+ this.missingArtifacts = missingArtifacts;
+ }
+
+ /**
+ * artifacts that could be resolved
+ *
+ * @return {@link List} of {@link Artifact}
+ */
+ public List<Artifact> getResolvedArtifacts()
+ {
+ return resolvedArtifacts;
+ }
+
+ /**
+ * artifacts that could NOT be resolved
+ *
+ * @return {@link List} of {@link Artifact}
+ */
+ public List<Artifact> getMissingArtifacts()
+ {
+ return missingArtifacts;
+ }
+
+ private static String constructMessage( List<Artifact> artifacts )
+ {
+ StringBuilder buffer = new StringBuilder( 256 );
+
+ buffer.append( "Missing:\n" );
+ buffer.append( "----------\n" );
+
+ int counter = 0;
+
+ for ( Artifact artifact : artifacts )
+ {
+ String message = ( ++counter ) + ") " + artifact.getId();
+
+ buffer.append( constructMissingArtifactMessage( message, " ", artifact.getGroupId(),
+ artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier(),
+ artifact.getDownloadUrl(), artifact.getDependencyTrail() ) );
+ }
+
+ buffer.append( "----------\n" );
+
+ int size = artifacts.size();
+
+ buffer.append( size ).append( " required artifact" );
+
+ if ( size > 1 )
+ {
+ buffer.append( "s are" );
+ }
+ else
+ {
+ buffer.append( " is" );
+ }
+
+ buffer.append( " missing.\n\nfor artifact: " );
+
+ return buffer.toString();
+ }
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ArtifactFilter.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ArtifactFilter.java
new file mode 100644
index 0000000..27b08a8
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ArtifactFilter.java
@@ -0,0 +1,30 @@
+package org.apache.maven.artifact.resolver.filter;
+
+/*
+ * 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 org.apache.maven.artifact.Artifact;
+
+/**
+ * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
+ */
+public interface ArtifactFilter
+{
+ boolean include( Artifact artifact );
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java
new file mode 100644
index 0000000..5b516a9
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java
@@ -0,0 +1,42 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * 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.
+ */
+
+/**
+ * Describes an artifact version in terms of its components, converts it to/from a string and
+ * compares two versions.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public interface ArtifactVersion
+ extends Comparable<ArtifactVersion>
+{
+ int getMajorVersion();
+
+ int getMinorVersion();
+
+ int getIncrementalVersion();
+
+ int getBuildNumber();
+
+ String getQualifier();
+
+ void parseVersion( String version );
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
new file mode 100644
index 0000000..987be48
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
@@ -0,0 +1,795 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * 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 java.math.BigInteger;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Deque;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Properties;
+
+/**
+ * <p>
+ * Generic implementation of version comparison.
+ * </p>
+ *
+ * Features:
+ * <ul>
+ * <li>mixing of '<code>-</code>' (hyphen) and '<code>.</code>' (dot) separators,</li>
+ * <li>transition between characters and digits also constitutes a separator:
+ * <code>1.0alpha1 => [1, 0, alpha, 1]</code></li>
+ * <li>unlimited number of version components,</li>
+ * <li>version components in the text can be digits or strings,</li>
+ * <li>strings are checked for well-known qualifiers and the qualifier ordering is used for version ordering.
+ * Well-known qualifiers (case insensitive) are:<ul>
+ * <li><code>alpha</code> or <code>a</code></li>
+ * <li><code>beta</code> or <code>b</code></li>
+ * <li><code>milestone</code> or <code>m</code></li>
+ * <li><code>rc</code> or <code>cr</code></li>
+ * <li><code>snapshot</code></li>
+ * <li><code>(the empty string)</code> or <code>ga</code> or <code>final</code></li>
+ * <li><code>sp</code></li>
+ * </ul>
+ * Unknown qualifiers are considered after known qualifiers, with lexical order (always case insensitive),
+ * </li>
+ * <li>a hyphen usually precedes a qualifier, and is always less important than something preceded with a dot.</li>
+ * </ul>
+ *
+ * @see <a href="https://cwiki.apache.org/confluence/display/MAVENOLD/Versioning">"Versioning" on Maven Wiki</a>
+ * @author <a href="mailto:kenney@apache.org">Kenney Westerhof</a>
+ * @author <a href="mailto:hboutemy@apache.org">Hervé Boutemy</a>
+ */
+public class ComparableVersion
+ implements Comparable<ComparableVersion>
+{
+ private static final int MAX_INTITEM_LENGTH = 9;
+
+ private static final int MAX_LONGITEM_LENGTH = 18;
+
+ private String value;
+
+ private String canonical;
+
+ private ListItem items;
+
+ private interface Item
+ {
+ int INT_ITEM = 3;
+ int LONG_ITEM = 4;
+ int BIGINTEGER_ITEM = 0;
+ int STRING_ITEM = 1;
+ int LIST_ITEM = 2;
+
+ int compareTo( Item item );
+
+ int getType();
+
+ boolean isNull();
+ }
+
+ /**
+ * Represents a numeric item in the version item list that can be represented with an int.
+ */
+ private static class IntItem
+ implements Item
+ {
+ private final int value;
+
+ public static final IntItem ZERO = new IntItem();
+
+ private IntItem()
+ {
+ this.value = 0;
+ }
+
+ IntItem( String str )
+ {
+ this.value = Integer.parseInt( str );
+ }
+
+ @Override
+ public int getType()
+ {
+ return INT_ITEM;
+ }
+
+ @Override
+ public boolean isNull()
+ {
+ return value == 0;
+ }
+
+ @Override
+ public int compareTo( Item item )
+ {
+ if ( item == null )
+ {
+ return ( value == 0 ) ? 0 : 1; // 1.0 == 1, 1.1 > 1
+ }
+
+ switch ( item.getType() )
+ {
+ case INT_ITEM:
+ int itemValue = ( (IntItem) item ).value;
+ return Integer.compare( value, itemValue );
+ case LONG_ITEM:
+ case BIGINTEGER_ITEM:
+ return -1;
+
+ case STRING_ITEM:
+ return 1; // 1.1 > 1-sp
+
+ case LIST_ITEM:
+ return 1; // 1.1 > 1-1
+
+ default:
+ throw new IllegalStateException( "invalid item: " + item.getClass() );
+ }
+ }
+
+ @Override
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+ if ( o == null || getClass() != o.getClass() )
+ {
+ return false;
+ }
+
+ IntItem intItem = (IntItem) o;
+
+ return value == intItem.value;
+
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return value;
+ }
+
+ @Override
+ public String toString()
+ {
+ return Integer.toString( value );
+ }
+ }
+
+ /**
+ * Represents a numeric item in the version item list that can be represented with a long.
+ */
+ private static class LongItem
+ implements Item
+ {
+ private final long value;
+
+ LongItem( String str )
+ {
+ this.value = Long.parseLong( str );
+ }
+
+ @Override
+ public int getType()
+ {
+ return LONG_ITEM;
+ }
+
+ @Override
+ public boolean isNull()
+ {
+ return value == 0;
+ }
+
+ @Override
+ public int compareTo( Item item )
+ {
+ if ( item == null )
+ {
+ return ( value == 0 ) ? 0 : 1; // 1.0 == 1, 1.1 > 1
+ }
+
+ switch ( item.getType() )
+ {
+ case INT_ITEM:
+ return 1;
+ case LONG_ITEM:
+ long itemValue = ( (LongItem) item ).value;
+ return Long.compare( value, itemValue );
+ case BIGINTEGER_ITEM:
+ return -1;
+
+ case STRING_ITEM:
+ return 1; // 1.1 > 1-sp
+
+ case LIST_ITEM:
+ return 1; // 1.1 > 1-1
+
+ default:
+ throw new IllegalStateException( "invalid item: " + item.getClass() );
+ }
+ }
+
+ @Override
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+ if ( o == null || getClass() != o.getClass() )
+ {
+ return false;
+ }
+
+ LongItem longItem = (LongItem) o;
+
+ return value == longItem.value;
+
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return (int) ( value ^ ( value >>> 32 ) );
+ }
+
+ @Override
+ public String toString()
+ {
+ return Long.toString( value );
+ }
+ }
+
+ /**
+ * Represents a numeric item in the version item list.
+ */
+ private static class BigIntegerItem
+ implements Item
+ {
+ private final BigInteger value;
+
+ BigIntegerItem( String str )
+ {
+ this.value = new BigInteger( str );
+ }
+
+ @Override
+ public int getType()
+ {
+ return BIGINTEGER_ITEM;
+ }
+
+ @Override
+ public boolean isNull()
+ {
+ return BigInteger.ZERO.equals( value );
+ }
+
+ @Override
+ public int compareTo( Item item )
+ {
+ if ( item == null )
+ {
+ return BigInteger.ZERO.equals( value ) ? 0 : 1; // 1.0 == 1, 1.1 > 1
+ }
+
+ switch ( item.getType() )
+ {
+ case INT_ITEM:
+ case LONG_ITEM:
+ return 1;
+
+ case BIGINTEGER_ITEM:
+ return value.compareTo( ( (BigIntegerItem) item ).value );
+
+ case STRING_ITEM:
+ return 1; // 1.1 > 1-sp
+
+ case LIST_ITEM:
+ return 1; // 1.1 > 1-1
+
+ default:
+ throw new IllegalStateException( "invalid item: " + item.getClass() );
+ }
+ }
+
+ @Override
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+ if ( o == null || getClass() != o.getClass() )
+ {
+ return false;
+ }
+
+ BigIntegerItem that = (BigIntegerItem) o;
+
+ return value.equals( that.value );
+
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return value.hashCode();
+ }
+
+ public String toString()
+ {
+ return value.toString();
+ }
+ }
+
+ /**
+ * Represents a string in the version item list, usually a qualifier.
+ */
+ private static class StringItem
+ implements Item
+ {
+ private static final List<String> QUALIFIERS =
+ Arrays.asList( "alpha", "beta", "milestone", "rc", "snapshot", "", "sp" );
+
+ private static final Properties ALIASES = new Properties();
+ static
+ {
+ ALIASES.put( "ga", "" );
+ ALIASES.put( "final", "" );
+ ALIASES.put( "release", "" );
+ ALIASES.put( "cr", "rc" );
+ }
+
+ /**
+ * A comparable value for the empty-string qualifier. This one is used to determine if a given qualifier makes
+ * the version older than one without a qualifier, or more recent.
+ */
+ private static final String RELEASE_VERSION_INDEX = String.valueOf( QUALIFIERS.indexOf( "" ) );
+
+ private final String value;
+
+ StringItem( String value, boolean followedByDigit )
+ {
+ if ( followedByDigit && value.length() == 1 )
+ {
+ // a1 = alpha-1, b1 = beta-1, m1 = milestone-1
+ switch ( value.charAt( 0 ) )
+ {
+ case 'a':
+ value = "alpha";
+ break;
+ case 'b':
+ value = "beta";
+ break;
+ case 'm':
+ value = "milestone";
+ break;
+ default:
+ }
+ }
+ this.value = ALIASES.getProperty( value , value );
+ }
+
+ @Override
+ public int getType()
+ {
+ return STRING_ITEM;
+ }
+
+ @Override
+ public boolean isNull()
+ {
+ return ( comparableQualifier( value ).compareTo( RELEASE_VERSION_INDEX ) == 0 );
+ }
+
+ /**
+ * Returns a comparable value for a qualifier.
+ *
+ * This method takes into account the ordering of known qualifiers then unknown qualifiers with lexical
+ * ordering.
+ *
+ * just returning an Integer with the index here is faster, but requires a lot of if/then/else to check for -1
+ * or QUALIFIERS.size and then resort to lexical ordering. Most comparisons are decided by the first character,
+ * so this is still fast. If more characters are needed then it requires a lexical sort anyway.
+ *
+ * @param qualifier
+ * @return an equivalent value that can be used with lexical comparison
+ */
+ public static String comparableQualifier( String qualifier )
+ {
+ int i = QUALIFIERS.indexOf( qualifier );
+
+ return i == -1 ? ( QUALIFIERS.size() + "-" + qualifier ) : String.valueOf( i );
+ }
+
+ @Override
+ public int compareTo( Item item )
+ {
+ if ( item == null )
+ {
+ // 1-rc < 1, 1-ga > 1
+ return comparableQualifier( value ).compareTo( RELEASE_VERSION_INDEX );
+ }
+ switch ( item.getType() )
+ {
+ case INT_ITEM:
+ case LONG_ITEM:
+ case BIGINTEGER_ITEM:
+ return -1; // 1.any < 1.1 ?
+
+ case STRING_ITEM:
+ return comparableQualifier( value ).compareTo( comparableQualifier( ( (StringItem) item ).value ) );
+
+ case LIST_ITEM:
+ return -1; // 1.any < 1-1
+
+ default:
+ throw new IllegalStateException( "invalid item: " + item.getClass() );
+ }
+ }
+
+ @Override
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+ if ( o == null || getClass() != o.getClass() )
+ {
+ return false;
+ }
+
+ StringItem that = (StringItem) o;
+
+ return value.equals( that.value );
+
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return value.hashCode();
+ }
+
+ public String toString()
+ {
+ return value;
+ }
+ }
+
+ /**
+ * Represents a version list item. This class is used both for the global item list and for sub-lists (which start
+ * with '-(number)' in the version specification).
+ */
+ private static class ListItem
+ extends ArrayList<Item>
+ implements Item
+ {
+ @Override
+ public int getType()
+ {
+ return LIST_ITEM;
+ }
+
+ @Override
+ public boolean isNull()
+ {
+ return ( size() == 0 );
+ }
+
+ void normalize()
+ {
+ for ( int i = size() - 1; i >= 0; i-- )
+ {
+ Item lastItem = get( i );
+
+ if ( lastItem.isNull() )
+ {
+ // remove null trailing items: 0, "", empty list
+ remove( i );
+ }
+ else if ( !( lastItem instanceof ListItem ) )
+ {
+ break;
+ }
+ }
+ }
+
+ @Override
+ public int compareTo( Item item )
+ {
+ if ( item == null )
+ {
+ if ( size() == 0 )
+ {
+ return 0; // 1-0 = 1- (normalize) = 1
+ }
+ Item first = get( 0 );
+ return first.compareTo( null );
+ }
+ switch ( item.getType() )
+ {
+ case INT_ITEM:
+ case LONG_ITEM:
+ case BIGINTEGER_ITEM:
+ return -1; // 1-1 < 1.0.x
+
+ case STRING_ITEM:
+ return 1; // 1-1 > 1-sp
+
+ case LIST_ITEM:
+ Iterator<Item> left = iterator();
+ Iterator<Item> right = ( (ListItem) item ).iterator();
+
+ while ( left.hasNext() || right.hasNext() )
+ {
+ Item l = left.hasNext() ? left.next() : null;
+ Item r = right.hasNext() ? right.next() : null;
+
+ // if this is shorter, then invert the compare and mul with -1
+ int result = l == null ? ( r == null ? 0 : -1 * r.compareTo( l ) ) : l.compareTo( r );
+
+ if ( result != 0 )
+ {
+ return result;
+ }
+ }
+
+ return 0;
+
+ default:
+ throw new IllegalStateException( "invalid item: " + item.getClass() );
+ }
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuilder buffer = new StringBuilder();
+ for ( Item item : this )
+ {
+ if ( buffer.length() > 0 )
+ {
+ buffer.append( ( item instanceof ListItem ) ? '-' : '.' );
+ }
+ buffer.append( item );
+ }
+ return buffer.toString();
+ }
+ }
+
+ public ComparableVersion( String version )
+ {
+ parseVersion( version );
+ }
+
+ @SuppressWarnings( "checkstyle:innerassignment" )
+ public final void parseVersion( String version )
+ {
+ this.value = version;
+
+ items = new ListItem();
+
+ version = version.toLowerCase( Locale.ENGLISH );
+
+ ListItem list = items;
+
+ Deque<Item> stack = new ArrayDeque<>();
+ stack.push( list );
+
+ boolean isDigit = false;
+
+ int startIndex = 0;
+
+ for ( int i = 0; i < version.length(); i++ )
+ {
+ char c = version.charAt( i );
+
+ if ( c == '.' )
+ {
+ if ( i == startIndex )
+ {
+ list.add( IntItem.ZERO );
+ }
+ else
+ {
+ list.add( parseItem( isDigit, version.substring( startIndex, i ) ) );
+ }
+ startIndex = i + 1;
+ }
+ else if ( c == '-' )
+ {
+ if ( i == startIndex )
+ {
+ list.add( IntItem.ZERO );
+ }
+ else
+ {
+ list.add( parseItem( isDigit, version.substring( startIndex, i ) ) );
+ }
+ startIndex = i + 1;
+
+ list.add( list = new ListItem() );
+ stack.push( list );
+ }
+ else if ( Character.isDigit( c ) )
+ {
+ if ( !isDigit && i > startIndex )
+ {
+ list.add( new StringItem( version.substring( startIndex, i ), true ) );
+ startIndex = i;
+
+ list.add( list = new ListItem() );
+ stack.push( list );
+ }
+
+ isDigit = true;
+ }
+ else
+ {
+ if ( isDigit && i > startIndex )
+ {
+ list.add( parseItem( true, version.substring( startIndex, i ) ) );
+ startIndex = i;
+
+ list.add( list = new ListItem() );
+ stack.push( list );
+ }
+
+ isDigit = false;
+ }
+ }
+
+ if ( version.length() > startIndex )
+ {
+ list.add( parseItem( isDigit, version.substring( startIndex ) ) );
+ }
+
+ while ( !stack.isEmpty() )
+ {
+ list = (ListItem) stack.pop();
+ list.normalize();
+ }
+ }
+
+ private static Item parseItem( boolean isDigit, String buf )
+ {
+ if ( isDigit )
+ {
+ buf = stripLeadingZeroes( buf );
+ if ( buf.length() <= MAX_INTITEM_LENGTH )
+ {
+ // lower than 2^31
+ return new IntItem( buf );
+ }
+ else if ( buf.length() <= MAX_LONGITEM_LENGTH )
+ {
+ // lower than 2^63
+ return new LongItem( buf );
+ }
+ return new BigIntegerItem( buf );
+ }
+ return new StringItem( buf, false );
+ }
+
+ private static String stripLeadingZeroes( String buf )
+ {
+ if ( buf == null || buf.isEmpty() )
+ {
+ return "0";
+ }
+ for ( int i = 0; i < buf.length(); ++i )
+ {
+ char c = buf.charAt( i );
+ if ( c != '0' )
+ {
+ return buf.substring( i );
+ }
+ }
+ return buf;
+ }
+
+ @Override
+ public int compareTo( ComparableVersion o )
+ {
+ return items.compareTo( o.items );
+ }
+
+ @Override
+ public String toString()
+ {
+ return value;
+ }
+
+ public String getCanonical()
+ {
+ if ( canonical == null )
+ {
+ canonical = items.toString();
+ }
+ return canonical;
+ }
+
+ @Override
+ public boolean equals( Object o )
+ {
+ return ( o instanceof ComparableVersion ) && items.equals( ( (ComparableVersion) o ).items );
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return items.hashCode();
+ }
+
+ // CHECKSTYLE_OFF: LineLength
+ /**
+ * Main to test version parsing and comparison.
+ * <p>
+ * To check how "1.2.7" compares to "1.2-SNAPSHOT", for example, you can issue
+ * <pre>java -jar ${maven.repo.local}/org/apache/maven/maven-artifact/${maven.version}/maven-artifact-${maven.version}.jar "1.2.7" "1.2-SNAPSHOT"</pre>
+ * command to command line. Result of given command will be something like this:
+ * <pre>
+ * Display parameters as parsed by Maven (in canonical form) and comparison result:
+ * 1. 1.2.7 == 1.2.7
+ * 1.2.7 > 1.2-SNAPSHOT
+ * 2. 1.2-SNAPSHOT == 1.2-snapshot
+ * </pre>
+ *
+ * @param args the version strings to parse and compare. You can pass arbitrary number of version strings and always
+ * two adjacent will be compared
+ */
+ // CHECKSTYLE_ON: LineLength
+ public static void main( String... args )
+ {
+ System.out.println( "Display parameters as parsed by Maven (in canonical form) and comparison result:" );
+ if ( args.length == 0 )
+ {
+ return;
+ }
+
+ ComparableVersion prev = null;
+ int i = 1;
+ for ( String version : args )
+ {
+ ComparableVersion c = new ComparableVersion( version );
+
+ if ( prev != null )
+ {
+ int compare = prev.compareTo( c );
+ System.out.println( " " + prev.toString() + ' '
+ + ( ( compare == 0 ) ? "==" : ( ( compare < 0 ) ? "<" : ">" ) ) + ' ' + version );
+ }
+
+ System.out.println( ( i++ ) + ". " + version + " == " + c.getCanonical() );
+
+ prev = c;
+ }
+ }
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
new file mode 100644
index 0000000..75b19fa
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
@@ -0,0 +1,251 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * 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 java.util.StringTokenizer;
+
+import static org.apache.commons.lang3.math.NumberUtils.isDigits;
+
+/**
+ * Default implementation of artifact versioning.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public class DefaultArtifactVersion
+ implements ArtifactVersion
+{
+ private Integer majorVersion;
+
+ private Integer minorVersion;
+
+ private Integer incrementalVersion;
+
+ private Integer buildNumber;
+
+ private String qualifier;
+
+ private ComparableVersion comparable;
+
+ public DefaultArtifactVersion( String version )
+ {
+ parseVersion( version );
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return 11 + comparable.hashCode();
+ }
+
+ @Override
+ public boolean equals( Object other )
+ {
+ if ( this == other )
+ {
+ return true;
+ }
+
+ if ( !( other instanceof ArtifactVersion ) )
+ {
+ return false;
+ }
+
+ return compareTo( (ArtifactVersion) other ) == 0;
+ }
+
+ public int compareTo( ArtifactVersion otherVersion )
+ {
+ if ( otherVersion instanceof DefaultArtifactVersion )
+ {
+ return this.comparable.compareTo( ( (DefaultArtifactVersion) otherVersion ).comparable );
+ }
+ else
+ {
+ return compareTo( new DefaultArtifactVersion( otherVersion.toString() ) );
+ }
+ }
+
+ public int getMajorVersion()
+ {
+ return majorVersion != null ? majorVersion : 0;
+ }
+
+ public int getMinorVersion()
+ {
+ return minorVersion != null ? minorVersion : 0;
+ }
+
+ public int getIncrementalVersion()
+ {
+ return incrementalVersion != null ? incrementalVersion : 0;
+ }
+
+ public int getBuildNumber()
+ {
+ return buildNumber != null ? buildNumber : 0;
+ }
+
+ public String getQualifier()
+ {
+ return qualifier;
+ }
+
+ public final void parseVersion( String version )
+ {
+ comparable = new ComparableVersion( version );
+
+ int index = version.indexOf( '-' );
+
+ String part1;
+ String part2 = null;
+
+ if ( index < 0 )
+ {
+ part1 = version;
+ }
+ else
+ {
+ part1 = version.substring( 0, index );
+ part2 = version.substring( index + 1 );
+ }
+
+ if ( part2 != null )
+ {
+ if ( part2.length() == 1 || !part2.startsWith( "0" ) )
+ {
+ buildNumber = tryParseInt( part2 );
+ if ( buildNumber == null )
+ {
+ qualifier = part2;
+ }
+ }
+ else
+ {
+ qualifier = part2;
+ }
+ }
+
+ if ( ( !part1.contains( "." ) ) && !part1.startsWith( "0" ) )
+ {
+ majorVersion = tryParseInt( part1 );
+ if ( majorVersion == null )
+ {
+ // qualifier is the whole version, including "-"
+ qualifier = version;
+ buildNumber = null;
+ }
+ }
+ else
+ {
+ boolean fallback = false;
+
+ StringTokenizer tok = new StringTokenizer( part1, "." );
+ if ( tok.hasMoreTokens() )
+ {
+ majorVersion = getNextIntegerToken( tok );
+ if ( majorVersion == null )
+ {
+ fallback = true;
+ }
+ }
+ else
+ {
+ fallback = true;
+ }
+ if ( tok.hasMoreTokens() )
+ {
+ minorVersion = getNextIntegerToken( tok );
+ if ( minorVersion == null )
+ {
+ fallback = true;
+ }
+ }
+ if ( tok.hasMoreTokens() )
+ {
+ incrementalVersion = getNextIntegerToken( tok );
+ if ( incrementalVersion == null )
+ {
+ fallback = true;
+ }
+ }
+ if ( tok.hasMoreTokens() )
+ {
+ qualifier = tok.nextToken();
+ fallback = isDigits( qualifier );
+ }
+
+ // string tokenizer won't detect these and ignores them
+ if ( part1.contains( ".." ) || part1.startsWith( "." ) || part1.endsWith( "." ) )
+ {
+ fallback = true;
+ }
+
+ if ( fallback )
+ {
+ // qualifier is the whole version, including "-"
+ qualifier = version;
+ majorVersion = null;
+ minorVersion = null;
+ incrementalVersion = null;
+ buildNumber = null;
+ }
+ }
+ }
+
+ private static Integer getNextIntegerToken( StringTokenizer tok )
+ {
+ String s = tok.nextToken();
+ if ( ( s.length() > 1 ) && s.startsWith( "0" ) )
+ {
+ return null;
+ }
+ return tryParseInt( s );
+ }
+
+ private static Integer tryParseInt( String s )
+ {
+ // for performance, check digits instead of relying later on catching NumberFormatException
+ if ( !isDigits( s ) )
+ {
+ return null;
+ }
+
+ try
+ {
+ long longValue = Long.parseLong( s );
+ if ( longValue > Integer.MAX_VALUE )
+ {
+ return null;
+ }
+ return (int) longValue;
+ }
+ catch ( NumberFormatException e )
+ {
+ // should never happen since checked isDigits(s) before
+ return null;
+ }
+ }
+
+ @Override
+ public String toString()
+ {
+ return comparable.toString();
+ }
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/InvalidVersionSpecificationException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/InvalidVersionSpecificationException.java
new file mode 100644
index 0000000..adc48b9
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/InvalidVersionSpecificationException.java
@@ -0,0 +1,34 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * 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.
+ */
+
+/**
+ * Occurs when a version is invalid.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public class InvalidVersionSpecificationException
+ extends Exception
+{
+ public InvalidVersionSpecificationException( String message )
+ {
+ super( message );
+ }
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java
new file mode 100644
index 0000000..bd8f383
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java
@@ -0,0 +1,49 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * 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 java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+
+/**
+ * Occurs when ranges exclude each other and no valid value remains.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public class OverConstrainedVersionException
+ extends ArtifactResolutionException
+{
+ public OverConstrainedVersionException( String msg,
+ Artifact artifact )
+ {
+ super( msg, artifact );
+ }
+
+ public OverConstrainedVersionException( String msg,
+ Artifact artifact,
+ List<ArtifactRepository> remoteRepositories )
+ {
+ super( msg, artifact, remoteRepositories );
+ }
+
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/Restriction.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/Restriction.java
new file mode 100644
index 0000000..c728e9f
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/Restriction.java
@@ -0,0 +1,195 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * 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.
+ */
+
+/**
+ * Describes a restriction in versioning.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public class Restriction
+{
+ private final ArtifactVersion lowerBound;
+
+ private final boolean lowerBoundInclusive;
+
+ private final ArtifactVersion upperBound;
+
+ private final boolean upperBoundInclusive;
+
+ public static final Restriction EVERYTHING = new Restriction( null, false, null, false );
+
+ public Restriction( ArtifactVersion lowerBound, boolean lowerBoundInclusive, ArtifactVersion upperBound,
+ boolean upperBoundInclusive )
+ {
+ this.lowerBound = lowerBound;
+ this.lowerBoundInclusive = lowerBoundInclusive;
+ this.upperBound = upperBound;
+ this.upperBoundInclusive = upperBoundInclusive;
+ }
+
+ public ArtifactVersion getLowerBound()
+ {
+ return lowerBound;
+ }
+
+ public boolean isLowerBoundInclusive()
+ {
+ return lowerBoundInclusive;
+ }
+
+ public ArtifactVersion getUpperBound()
+ {
+ return upperBound;
+ }
+
+ public boolean isUpperBoundInclusive()
+ {
+ return upperBoundInclusive;
+ }
+
+ public boolean containsVersion( ArtifactVersion version )
+ {
+ if ( lowerBound != null )
+ {
+ int comparison = lowerBound.compareTo( version );
+
+ if ( ( comparison == 0 ) && !lowerBoundInclusive )
+ {
+ return false;
+ }
+ if ( comparison > 0 )
+ {
+ return false;
+ }
+ }
+ if ( upperBound != null )
+ {
+ int comparison = upperBound.compareTo( version );
+
+ if ( ( comparison == 0 ) && !upperBoundInclusive )
+ {
+ return false;
+ }
+ if ( comparison < 0 )
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = 13;
+
+ if ( lowerBound == null )
+ {
+ result += 1;
+ }
+ else
+ {
+ result += lowerBound.hashCode();
+ }
+
+ result *= lowerBoundInclusive ? 1 : 2;
+
+ if ( upperBound == null )
+ {
+ result -= 3;
+ }
+ else
+ {
+ result -= upperBound.hashCode();
+ }
+
+ result *= upperBoundInclusive ? 2 : 3;
+
+ return result;
+ }
+
+ @Override
+ public boolean equals( Object other )
+ {
+ if ( this == other )
+ {
+ return true;
+ }
+
+ if ( !( other instanceof Restriction ) )
+ {
+ return false;
+ }
+
+ Restriction restriction = (Restriction) other;
+ if ( lowerBound != null )
+ {
+ if ( !lowerBound.equals( restriction.lowerBound ) )
+ {
+ return false;
+ }
+ }
+ else if ( restriction.lowerBound != null )
+ {
+ return false;
+ }
+
+ if ( lowerBoundInclusive != restriction.lowerBoundInclusive )
+ {
+ return false;
+ }
+
+ if ( upperBound != null )
+ {
+ if ( !upperBound.equals( restriction.upperBound ) )
+ {
+ return false;
+ }
+ }
+ else if ( restriction.upperBound != null )
+ {
+ return false;
+ }
+
+ return upperBoundInclusive == restriction.upperBoundInclusive;
+
+ }
+
+ public String toString()
+ {
+ StringBuilder buf = new StringBuilder();
+
+ buf.append( isLowerBoundInclusive() ? '[' : '(' );
+ if ( getLowerBound() != null )
+ {
+ buf.append( getLowerBound().toString() );
+ }
+ buf.append( ',' );
+ if ( getUpperBound() != null )
+ {
+ buf.append( getUpperBound().toString() );
+ }
+ buf.append( isUpperBoundInclusive() ? ']' : ')' );
+
+ return buf.toString();
+ }
+}
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
new file mode 100644
index 0000000..d2409dd
--- /dev/null
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
@@ -0,0 +1,607 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * 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 java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
+import java.util.Objects;
+
+import org.apache.maven.artifact.Artifact;
+
+/**
+ * Construct a version range from a specification.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public class VersionRange
+{
+ private static final Map<String, VersionRange> CACHE_SPEC =
+ Collections.synchronizedMap( new WeakHashMap<>() );
+
+ private static final Map<String, VersionRange> CACHE_VERSION =
+ Collections.synchronizedMap( new WeakHashMap<>() );
+
+ private final ArtifactVersion recommendedVersion;
+
+ private final List<Restriction> restrictions;
+
+ private VersionRange( ArtifactVersion recommendedVersion,
+ List<Restriction> restrictions )
+ {
+ this.recommendedVersion = recommendedVersion;
+ this.restrictions = restrictions;
+ }
+
+ public ArtifactVersion getRecommendedVersion()
+ {
+ return recommendedVersion;
+ }
+
+ public List<Restriction> getRestrictions()
+ {
+ return restrictions;
+ }
+
+ /**
+ * @deprecated VersionRange is immutable, cloning is not useful and even more an issue against the cache
+ * @return a clone
+ */
+ @Deprecated
+ public VersionRange cloneOf()
+ {
+ List<Restriction> copiedRestrictions = null;
+
+ if ( restrictions != null )
+ {
+ copiedRestrictions = new ArrayList<>();
+
+ if ( !restrictions.isEmpty() )
+ {
+ copiedRestrictions.addAll( restrictions );
+ }
+ }
+
+ return new VersionRange( recommendedVersion, copiedRestrictions );
+ }
+
+ /**
+ * <p>
+ * Create a version range from a string representation
+ * </p>
+ * Some spec examples are:
+ * <ul>
+ * <li><code>1.0</code> Version 1.0</li>
+ * <li><code>[1.0,2.0)</code> Versions 1.0 (included) to 2.0 (not included)</li>
+ * <li><code>[1.0,2.0]</code> Versions 1.0 to 2.0 (both included)</li>
+ * <li><code>[1.5,)</code> Versions 1.5 and higher</li>
+ * <li><code>(,1.0],[1.2,)</code> Versions up to 1.0 (included) and 1.2 or higher</li>
+ * </ul>
+ *
+ * @param spec string representation of a version or version range
+ * @return a new {@link VersionRange} object that represents the spec
+ * @throws InvalidVersionSpecificationException
+ *
+ */
+ public static VersionRange createFromVersionSpec( String spec )
+ throws InvalidVersionSpecificationException
+ {
+ if ( spec == null )
+ {
+ return null;
+ }
+
+ VersionRange cached = CACHE_SPEC.get( spec );
+ if ( cached != null )
+ {
+ return cached;
+ }
+
+ List<Restriction> restrictions = new ArrayList<>();
+ String process = spec;
+ ArtifactVersion version = null;
+ ArtifactVersion upperBound = null;
+ ArtifactVersion lowerBound = null;
+
+ while ( process.startsWith( "[" ) || process.startsWith( "(" ) )
+ {
+ int index1 = process.indexOf( ')' );
+ int index2 = process.indexOf( ']' );
+
+ int index = index2;
+ if ( index2 < 0 || index1 < index2 )
+ {
+ if ( index1 >= 0 )
+ {
+ index = index1;
+ }
+ }
+
+ if ( index < 0 )
+ {
+ throw new InvalidVersionSpecificationException( "Unbounded range: " + spec );
+ }
+
+ Restriction restriction = parseRestriction( process.substring( 0, index + 1 ) );
+ if ( lowerBound == null )
+ {
+ lowerBound = restriction.getLowerBound();
+ }
+ if ( upperBound != null )
+ {
+ if ( restriction.getLowerBound() == null || restriction.getLowerBound().compareTo( upperBound ) < 0 )
+ {
+ throw new InvalidVersionSpecificationException( "Ranges overlap: " + spec );
+ }
+ }
+ restrictions.add( restriction );
+ upperBound = restriction.getUpperBound();
+
+ process = process.substring( index + 1 ).trim();
+
+ if ( process.length() > 0 && process.startsWith( "," ) )
+ {
+ process = process.substring( 1 ).trim();
+ }
+ }
+
+ if ( process.length() > 0 )
+ {
+ if ( restrictions.size() > 0 )
+ {
+ throw new InvalidVersionSpecificationException(
+ "Only fully-qualified sets allowed in multiple set scenario: " + spec );
+ }
+ else
+ {
+ version = new DefaultArtifactVersion( process );
+ restrictions.add( Restriction.EVERYTHING );
+ }
+ }
+
+ cached = new VersionRange( version, restrictions );
+ CACHE_SPEC.put( spec, cached );
+ return cached;
+ }
+
+ private static Restriction parseRestriction( String spec )
+ throws InvalidVersionSpecificationException
+ {
+ boolean lowerBoundInclusive = spec.startsWith( "[" );
+ boolean upperBoundInclusive = spec.endsWith( "]" );
+
+ String process = spec.substring( 1, spec.length() - 1 ).trim();
+
+ Restriction restriction;
+
+ int index = process.indexOf( ',' );
+
+ if ( index < 0 )
+ {
+ if ( !lowerBoundInclusive || !upperBoundInclusive )
+ {
+ throw new InvalidVersionSpecificationException( "Single version must be surrounded by []: " + spec );
+ }
+
+ ArtifactVersion version = new DefaultArtifactVersion( process );
+
+ restriction = new Restriction( version, lowerBoundInclusive, version, upperBoundInclusive );
+ }
+ else
+ {
+ String lowerBound = process.substring( 0, index ).trim();
+ String upperBound = process.substring( index + 1 ).trim();
+ if ( lowerBound.equals( upperBound ) )
+ {
+ throw new InvalidVersionSpecificationException( "Range cannot have identical boundaries: " + spec );
+ }
+
+ ArtifactVersion lowerVersion = null;
+ if ( lowerBound.length() > 0 )
+ {
+ lowerVersion = new DefaultArtifactVersion( lowerBound );
+ }
+ ArtifactVersion upperVersion = null;
+ if ( upperBound.length() > 0 )
+ {
+ upperVersion = new DefaultArtifactVersion( upperBound );
+ }
+
+ if ( upperVersion != null && lowerVersion != null && upperVersion.compareTo( lowerVersion ) < 0 )
+ {
+ throw new InvalidVersionSpecificationException( "Range defies version ordering: " + spec );
+ }
+
+ restriction = new Restriction( lowerVersion, lowerBoundInclusive, upperVersion, upperBoundInclusive );
+ }
+
+ return restriction;
+ }
+
+ public static VersionRange createFromVersion( String version )
+ {
+ VersionRange cached = CACHE_VERSION.get( version );
+ if ( cached == null )
+ {
+ List<Restriction> restrictions = Collections.emptyList();
+ cached = new VersionRange( new DefaultArtifactVersion( version ), restrictions );
+ CACHE_VERSION.put( version, cached );
+ }
+ return cached;
+ }
+
+ /**
+ * Creates and returns a new <code>VersionRange</code> that is a restriction of this
+ * version range and the specified version range.
+ * <p>
+ * Note: Precedence is given to the recommended version from this version range over the
+ * recommended version from the specified version range.
+ * </p>
+ *
+ * @param restriction the <code>VersionRange</code> that will be used to restrict this version
+ * range.
+ * @return the <code>VersionRange</code> that is a restriction of this version range and the
+ * specified version range.
+ * <p>
+ * The restrictions of the returned version range will be an intersection of the restrictions
+ * of this version range and the specified version range if both version ranges have
+ * restrictions. Otherwise, the restrictions on the returned range will be empty.
+ * </p>
+ * <p>
+ * The recommended version of the returned version range will be the recommended version of
+ * this version range, provided that ranges falls within the intersected restrictions. If
+ * the restrictions are empty, this version range's recommended version is used if it is not
+ * <code>null</code>. If it is <code>null</code>, the specified version range's recommended
+ * version is used (provided it is non-<code>null</code>). If no recommended version can be
+ * obtained, the returned version range's recommended version is set to <code>null</code>.
+ * </p>
+ * @throws NullPointerException if the specified <code>VersionRange</code> is
+ * <code>null</code>.
+ */
+ public VersionRange restrict( VersionRange restriction )
+ {
+ List<Restriction> r1 = this.restrictions;
+ List<Restriction> r2 = restriction.restrictions;
+ List<Restriction> restrictions;
+
+ if ( r1.isEmpty() || r2.isEmpty() )
+ {
+ restrictions = Collections.emptyList();
+ }
+ else
+ {
+ restrictions = Collections.unmodifiableList( intersection( r1, r2 ) );
+ }
+
+ ArtifactVersion version = null;
+ if ( restrictions.size() > 0 )
+ {
+ for ( Restriction r : restrictions )
+ {
+ if ( recommendedVersion != null && r.containsVersion( recommendedVersion ) )
+ {
... 190263 lines suppressed ...