RepositoryArtifactDescription (String uri, String baseUri, String className) { final String repoPathFile = uri.substring((baseUri + "storage/").length()); final int repoIndex = repoPathFile.indexOf('/'); final String repoString = repoPathFile.substring(0, repoIndex); final String repo = repoString.endsWith("-cache") ? repoString.substring(0, repoString.lastIndexOf('-')) : repoString; final String filePath = repoPathFile.substring(repoIndex + 1, repoPathFile.lastIndexOf('/')); final int artIdIndex = filePath.lastIndexOf('/'); final String version = filePath.substring(artIdIndex + 1); final String groupArtifact = filePath.substring(0, artIdIndex); final int groupIndex = groupArtifact.lastIndexOf('/'); final String artifact = groupArtifact.substring(groupIndex + 1); final String group = groupArtifact.substring(0, groupIndex).replace('/', '.'); final String packaging = uri.substring(uri.lastIndexOf('.') + 1); return new RepositoryArtifactDescription(group, artifact, version, packaging, null, className, repo); }