Skip to content

Commit 6e6e6b6

Browse files
authored
Relax Jar path matching for coordinates extraction (#144)
Fixes #129
1 parent 6b72840 commit 6e6e6b6

File tree

2 files changed

+49
-12
lines changed

2 files changed

+49
-12
lines changed

src/main/java/org/gradlex/javamodule/moduleinfo/FilePathToModuleCoordinates.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ static boolean isInGradleCache(Path path) {
6565
return false;
6666
}
6767
String version = getVersionFromGradleCachePath(path);
68-
return path.getFileName().toString().startsWith(name + "-" + version);
68+
return matchesPath(path, name, version);
6969
}
7070

7171
static boolean isInM2Cache(Path path) {
@@ -74,7 +74,7 @@ static boolean isInM2Cache(Path path) {
7474
return false;
7575
}
7676
String version = getVersionFromM2CachePath(path);
77-
return path.getFileName().toString().startsWith(name + "-" + version);
77+
return matchesPath(path, name, version);
7878
}
7979

8080
@Nullable
@@ -85,12 +85,12 @@ private static String nameCoordinateFromFilePath(Path path) {
8585

8686
String nameFromGradleCachePath = path.getName(path.getNameCount() - 4).toString();
8787
String versionFromGradleCachePath = getVersionFromGradleCachePath(path);
88-
if (path.getFileName().toString().startsWith(nameFromGradleCachePath + "-" + versionFromGradleCachePath)) {
88+
if (matchesPath(path, nameFromGradleCachePath, versionFromGradleCachePath)) {
8989
return nameFromGradleCachePath;
9090
}
9191
String nameFromM2CachePath = path.getName(path.getNameCount() - 3).toString();
9292
String versionFromM2CachePath = getVersionFromM2CachePath(path);
93-
if (path.getFileName().toString().startsWith(nameFromM2CachePath + "-" + versionFromM2CachePath)) {
93+
if (matchesPath(path, nameFromM2CachePath, versionFromM2CachePath)) {
9494
return nameFromM2CachePath;
9595
}
9696

@@ -104,4 +104,9 @@ private static String getVersionFromGradleCachePath(Path path) {
104104
private static String getVersionFromM2CachePath(Path path) {
105105
return path.getName(path.getNameCount() - 2).toString();
106106
}
107+
108+
private static boolean matchesPath(Path path, String name, String version) {
109+
String jarFileName = path.getFileName().toString();
110+
return jarFileName.startsWith(name + "-") && !jarFileName.startsWith(version);
111+
}
107112
}

src/test/groovy/org/gradlex/javamodule/moduleinfo/FilePathToModuleCoordinatesTest.groovy

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,15 @@ class FilePathToModuleCoordinatesTest extends Specification {
1414
def path = path('/Users/someone/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.36/6c62681a2f655b49963a5983b8b0950a6120ae14/slf4j-api-1.7.36.jar')
1515

1616
expect:
17-
versionFromFilePath(path) == "1.7.36"
17+
versionFromFilePath(path) == "1.7.36"
18+
}
19+
20+
def "version from gradle cache file path (version in file name does not match)"() {
21+
given:
22+
def path = path('/Users/jendrik/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/33.2.1-jre/818e780da2c66c63bbb6480fef1f3855eeafa3e4/guava-33.2.1-android.jar')
23+
24+
expect:
25+
versionFromFilePath(path) == "33.2.1-jre"
1826
}
1927
2028
def "ga coordinates from gradle cache file path"() {
@@ -25,30 +33,54 @@ class FilePathToModuleCoordinatesTest extends Specification {
2533
gaCoordinatesFromFilePathMatch(path, "org.slf4j:slf4j-api")
2634
}
2735
36+
def "ga coordinates from gradle cache file path (version in file name does not match)"() {
37+
given:
38+
def path = path('/Users/jendrik/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/33.2.1-jre/818e780da2c66c63bbb6480fef1f3855eeafa3e4/guava-33.2.1-android.jar')
39+
40+
expect:
41+
gaCoordinatesFromFilePathMatch(path, "com.google.guava:guava")
42+
}
43+
2844
def "version from m2 repo file path"() {
2945
given:
30-
def path = path('/Users/someone/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar.')
46+
def path = path('/Users/someone/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar')
47+
48+
expect:
49+
versionFromFilePath(path) == "3.0.2"
50+
}
51+
52+
def "version from m2 repo file path (version in file name does not match)"() {
53+
given:
54+
def path = path('/Users/someone/.m2/repository/com/google/guava/guava/33.2.1-jre/guava-33.2.1-android.jar')
3155
3256
expect:
33-
versionFromFilePath(path) == "3.0.2"
57+
versionFromFilePath(path) == "33.2.1-jre"
3458
}
3559
3660
def "ga coordinates from m2 repo file path"() {
3761
Path jarPath
3862
39-
when:
40-
jarPath = path('/Users/someone/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar.')
63+
when:
64+
jarPath = path('/Users/someone/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar')
4165
42-
then:
43-
gaCoordinatesFromFilePathMatch(jarPath, "com.google.code.findbugs:jsr305")
66+
then:
67+
gaCoordinatesFromFilePathMatch(jarPath, "com.google.code.findbugs:jsr305")
4468
4569
when:
46-
jarPath = path('/Users/someone/.m2/repository/de/odysseus/juel/juel-impl/2.2.7/juel-impl-2.2.7.jar.')
70+
jarPath = path('/Users/someone/.m2/repository/de/odysseus/juel/juel-impl/2.2.7/juel-impl-2.2.7.jar')
4771
4872
then:
4973
gaCoordinatesFromFilePathMatch(jarPath, "de.odysseus.juel:juel-impl")
5074
}
5175
76+
def "ga coordinates from m2 repo file path (version in file name does not match)"() {
77+
given:
78+
def path = path('/Users/someone/.m2/repository/com/google/guava/guava/33.2.1-jre/guava-33.2.1-android.jar')
79+
80+
expect:
81+
gaCoordinatesFromFilePathMatch(path, "com.google.guava:guava")
82+
}
83+
5284
private Path path(String path) {
5385
new File(path).toPath()
5486
}

0 commit comments

Comments
 (0)