Commit
- use in maven-publish and maven plugin - todo add support for 'RELEASE' and 'LATEST' +review REVIEW-5225
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
/* | ||
* Copyright 2014 the original author or authors. | ||
* | ||
* 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. | ||
*/ | ||
|
||
package org.gradle.api.publication.maven.internal; | ||
|
||
import java.util.regex.Matcher; | ||
import java.util.regex.Pattern; | ||
|
||
public class MavenVersionRangeMapper implements VersionRangeMapper{ | ||
|
||
private static final String FIXED_PREFIX = "([\\d\\.]*)"; | ||
private static final String DYN_VERSION_NUMBER = "(\\d+)"; | ||
public static final String PLUS_OPER = "[\\.]?\\+"; | ||
private static final String PLUS_NOTATION_PATTERN = FIXED_PREFIX + DYN_VERSION_NUMBER + PLUS_OPER; | ||
|
||
public final Pattern plusNotationPattern = Pattern.compile(PLUS_NOTATION_PATTERN); | ||
|
||
public String map(String version) { | ||
Matcher plusNotationMatcher = plusNotationPattern.matcher(version); | ||
if(plusNotationMatcher.matches()){ | ||
String prefix = plusNotationMatcher.group(1); | ||
int dynVersionPart = Integer.parseInt(plusNotationMatcher.group(2)); | ||
if(prefix!=null){ | ||
return String.format("[%s%s,%s%s)", prefix, dynVersionPart, prefix, dynVersionPart+1); | ||
} else{ | ||
return String.format("[%s,%s)", dynVersionPart, dynVersionPart+1); | ||
} | ||
} | ||
return version; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
/* | ||
* Copyright 2014 the original author or authors. | ||
* | ||
* 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. | ||
*/ | ||
|
||
package org.gradle.api.publication.maven.internal; | ||
|
||
public interface VersionRangeMapper { | ||
String map(String version); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/* | ||
* Copyright 2014 the original author or authors. | ||
* | ||
* 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. | ||
*/ | ||
|
||
package org.gradle.api.publication.maven.internal | ||
|
||
import spock.lang.Specification | ||
import spock.lang.Unroll | ||
|
||
class MavenVersionRangeMapperSpec extends Specification { | ||
def mapper = new MavenVersionRangeMapper() | ||
|
||
@Unroll | ||
def "maps '#input' to '#output'"() { | ||
expect: | ||
mapper.map(input) == output | ||
where: | ||
input | output | ||
"1.0" | "1.0" | ||
"1+" | "[1,2)" | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
mosabua
|
||
"1.+" | "[1,2)" | ||
This comment has been minimized.
Sorry, something went wrong.
mosabua
|
||
"1.5.+" | "[1.5,1.6)" | ||
"1.5+" | "[1.5,1.6)" | ||
"1.100+" | "[1.100,1.101)" | ||
This comment has been minimized.
Sorry, something went wrong. |
||
"10.1+" | "[10.1,10.2)" | ||
|
||
// TODO map LATEST & RELEASE (first support on our pom parsing must be added) | ||
// "latest.integration" | "LATEST" | ||
// "latest.release" | "RELEASE" | ||
} | ||
} |
This is wrong. Should be "[1,)"