57 lines
2.1 KiB
Java
57 lines
2.1 KiB
Java
/*
|
|
* Minecraft Forge
|
|
* Copyright (c) 2016-2018.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation version 2.1
|
|
* of the License.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
package net.minecraftforge.fml.loading;
|
|
|
|
import java.nio.file.Path;
|
|
import java.nio.file.Paths;
|
|
|
|
/**
|
|
* Convert a maven coordinate into a Path.
|
|
*
|
|
* {@code <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>}, must not be {@code null}.
|
|
*/
|
|
|
|
public class MavenCoordinateResolver {
|
|
public static Path get(final String coordinate) {
|
|
final String[] parts = coordinate.split(":");
|
|
final String groupId = parts[0];
|
|
final String artifactId = parts[1];
|
|
final String extension = parts.length > 3 ? parts[2] : "";
|
|
final String classifier = parts.length > 4 ? parts[3] : "";
|
|
final String version = parts[parts.length-1];
|
|
return get(groupId, artifactId, extension, classifier, version);
|
|
}
|
|
|
|
public static Path get(final String groupId, final String artifactId, final String extension, final String classifier, final String version)
|
|
{
|
|
final String fileName = artifactId + "-" + version +
|
|
(!classifier.isEmpty() ? "-"+ classifier : "") +
|
|
(!extension.isEmpty() ? "." + extension : ".jar");
|
|
|
|
String[] groups = groupId.split("\\.");
|
|
Path result = Paths.get(groups[0]);
|
|
for (int i = 1; i < groups.length; i++) {
|
|
result = result.resolve(groups[i]);
|
|
}
|
|
|
|
return result.resolve(artifactId).resolve(version).resolve(fileName);
|
|
}
|
|
}
|