mirror of https://github.com/apache/maven.git
[MNG-7851] Improve error message when modelVersion is 4.0 (#1210)
Improve DefaultModelValidator.compareModelVersions to be able to compare versions which different numbers of segments, allowing it to compare "4", "4.0", and "4.0.0" to each other for example. Signed-off-by: Craig Andrews <candrews@integralblue.com>
This commit is contained in:
parent
67b8c0703a
commit
c482de86c1
|
@ -1449,16 +1449,14 @@ public class DefaultModelValidator implements ModelValidator {
|
||||||
// we use a dedicated comparator because we control our model version scheme.
|
// we use a dedicated comparator because we control our model version scheme.
|
||||||
String[] firstSegments = StringUtils.split(first, ".");
|
String[] firstSegments = StringUtils.split(first, ".");
|
||||||
String[] secondSegments = StringUtils.split(second, ".");
|
String[] secondSegments = StringUtils.split(second, ".");
|
||||||
for (int i = 0; i < Math.min(firstSegments.length, secondSegments.length); i++) {
|
for (int i = 0; i < Math.max(firstSegments.length, secondSegments.length); i++) {
|
||||||
int result = Long.valueOf(firstSegments[i]).compareTo(Long.valueOf(secondSegments[i]));
|
int result = Long.valueOf(i < firstSegments.length ? firstSegments[i] : "0")
|
||||||
|
.compareTo(Long.valueOf(i < secondSegments.length ? secondSegments[i] : "0"));
|
||||||
if (result != 0) {
|
if (result != 0) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (firstSegments.length == secondSegments.length) {
|
return 0;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return firstSegments.length > secondSegments.length ? -1 : 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("checkstyle:parameternumber")
|
@SuppressWarnings("checkstyle:parameternumber")
|
||||||
|
|
|
@ -117,6 +117,15 @@ public class DefaultModelValidatorTest extends TestCase {
|
||||||
assertTrue(result.getFatals().get(0).contains("modelVersion"));
|
assertTrue(result.getFatals().get(0).contains("modelVersion"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testModelVersion40() throws Exception {
|
||||||
|
SimpleProblemCollector result =
|
||||||
|
validateRaw("modelVersion-4_0.xml", ModelBuildingRequest.VALIDATION_LEVEL_STRICT);
|
||||||
|
|
||||||
|
assertViolations(result, 0, 1, 0);
|
||||||
|
|
||||||
|
assertTrue(result.getErrors().get(0).contains("'modelVersion' must be one of"));
|
||||||
|
}
|
||||||
|
|
||||||
public void testMissingArtifactId() throws Exception {
|
public void testMissingArtifactId() throws Exception {
|
||||||
SimpleProblemCollector result = validate("missing-artifactId-pom.xml");
|
SimpleProblemCollector result = validate("missing-artifactId-pom.xml");
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
<!--
|
||||||
|
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>
|
||||||
|
<modelVersion>4.0</modelVersion>
|
||||||
|
<groupId>foo</groupId>
|
||||||
|
<artifactId>bar</artifactId>
|
||||||
|
<version>0.1</version>
|
||||||
|
</project>
|
Loading…
Reference in New Issue