Index: src/java/org/apache/ivy/plugins/version/VersionRangeMatcher.java =================================================================== --- src/java/org/apache/ivy/plugins/version/VersionRangeMatcher.java (revision 673063) +++ src/java/org/apache/ivy/plugins/version/VersionRangeMatcher.java (working copy) @@ -42,6 +42,7 @@ private static final String OPEN_INC = "["; private static final String OPEN_EXC = "]"; + private static final String OPEN_EXC_MAVEN = "("; private static final String CLOSE_INC = "]"; @@ -46,6 +47,7 @@ private static final String CLOSE_INC = "]"; private static final String CLOSE_EXC = "["; + private static final String CLOSE_EXC_MAVEN = ")"; private static final String LOWER_INFINITE = "("; @@ -56,11 +58,11 @@ // following patterns are built upon constants above and should not be modified private static final String OPEN_INC_PATTERN = "\\" + OPEN_INC; - private static final String OPEN_EXC_PATTERN = "\\" + OPEN_EXC; + private static final String OPEN_EXC_PATTERN = "[" + "\\" + OPEN_EXC + "\\" + OPEN_EXC_MAVEN + "]"; private static final String CLOSE_INC_PATTERN = "\\" + CLOSE_INC; - private static final String CLOSE_EXC_PATTERN = "\\" + CLOSE_EXC; + private static final String CLOSE_EXC_PATTERN = "[" + "\\" + CLOSE_EXC + "\\" + CLOSE_EXC_MAVEN + "]"; private static final String LI_PATTERN = "\\" + LOWER_INFINITE; Index: test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java =================================================================== --- test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java (revision 673063) +++ test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java (working copy) @@ -27,6 +27,26 @@ public VersionRangeMatcherTest() { } + + public void testMavenExcludeParenthesis() throws Exception { + assertAccept("[3.8,4.0)", "3.7", false); + assertAccept("[3.8,4.0)", "3.8", true); + assertAccept("[3.8,4.0)", "3.9", true); + assertAccept("[3.8,4.0)", "4.0", false); + assertAccept("[3.8,4.0)", "4.1", false); + + assertAccept("(3.8,4.0]", "3.7", false); + assertAccept("(3.8,4.0]", "3.8", false); + assertAccept("(3.8,4.0]", "3.9", true); + assertAccept("(3.8,4.0]", "4.0", true); + assertAccept("(3.8,4.0]", "4.1", false); + + assertAccept("(3.8,4.0)", "3.7", false); + assertAccept("(3.8,4.0)", "3.8", false); + assertAccept("(3.8,4.0)", "3.9", true); + assertAccept("(3.8,4.0)", "4.0", false); + assertAccept("(3.8,4.0)", "4.1", false); + } public void testDynamic() { assertDynamic("lastest.integration", false); @@ -32,7 +52,6 @@ assertDynamic("lastest.integration", false); assertDynamic("[1.0]", false); assertDynamic("(1.0)", false); - assertDynamic("(1.0,2.0)", false); assertDynamic("[1.0;2.0]", false); assertDynamic("[1.0,2.0]", true); @@ -42,6 +61,9 @@ assertDynamic("[1.0,)", true); assertDynamic("(,1.0]", true); + assertDynamic("(1.0, 2.0)", true); + assertDynamic("(1.0, 2.0]", true); + assertDynamic("[1.0, 2.0)", true); assertDynamic("[1.0, 2.0]", true); assertDynamic("[ 1.0, 2.0]", true); assertDynamic("[1.0, 2.0 ]", true);