[ https://issues.apache.org/jira/browse/MRESOLVER-700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17944180#comment-17944180 ]
ASF GitHub Bot commented on MRESOLVER-700: ------------------------------------------ slawekjaranowski commented on code in PR #685: URL: https://github.com/apache/maven-resolver/pull/685#discussion_r2041505558 ########## maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporterFactory.java: ########## @@ -66,28 +65,61 @@ public FileTransporterFactory setPriority(float priority) { return this; } + /** + * Creates new instance of {@link FileTransporter}. + * + * @param session The session. + * @param repository The remote repository. + */ @Override public Transporter newInstance(RepositorySystemSession session, RemoteRepository repository) throws NoTransporterException { requireNonNull(session, "session cannot be null"); requireNonNull(repository, "repository cannot be null"); - // special case in file transport: to support custom FS providers (like JIMFS), we cannot - // cover "all possible protocols" to throw NoTransporterEx, but we rely on FS rejecting the URI - FileTransporter.FileOp fileOp = FileTransporter.FileOp.COPY; String repositoryUrl = repository.getUrl(); - if (repositoryUrl.startsWith("symlink+")) { - fileOp = FileTransporter.FileOp.SYMLINK; - repositoryUrl = repositoryUrl.substring("symlink+".length()); - } else if (repositoryUrl.startsWith("hardlink+")) { - fileOp = FileTransporter.FileOp.HARDLINK; - repositoryUrl = repositoryUrl.substring("hardlink+".length()); - } - try { - return new FileTransporter( - Paths.get(RepositoryUriUtils.toUri(repositoryUrl)).toAbsolutePath(), fileOp); - } catch (FileSystemNotFoundException | IllegalArgumentException e) { - throw new NoTransporterException(repository, e); + if (repositoryUrl.startsWith("bundle:")) { + try { + repositoryUrl = repositoryUrl.substring("bundle:".length()); + URI bundlePath = URI.create("jar:" + + Paths.get(RepositoryUriUtils.toUri(repositoryUrl)) + .toAbsolutePath() + .toUri() + .toASCIIString()); + Map<String, String> env = new HashMap<>(); + FileSystem fileSystem = FileSystems.newFileSystem(bundlePath, env); + return new FileTransporter( + fileSystem, + true, + false, + fileSystem.getPath(fileSystem.getSeparator()), + FileTransporter.WriteOp.COPY); + } catch (IOException e) { + throw new UncheckedIOException(e); // hard failure; most probably user error (ie wrong path or perm) Review Comment: For others FS we have different exception handling .. can be the same as in lines 120-122 or one catch? > Bundle transport > ---------------- > > Key: MRESOLVER-700 > URL: https://issues.apache.org/jira/browse/MRESOLVER-700 > Project: Maven Resolver > Issue Type: Task > Reporter: Tamas Cservenak > Assignee: Tamas Cservenak > Priority: Major > Fix For: 2.0.9 > > > It is becoming more and more common that various services require "zipped up > bundle" (using remote repository layout) of things like releases. As > experiment shows, these can be used as "remote repositories" as well (with > existing classpath transport). What if we have a dedicated transport? As > before, we defined remote repository that point to a staging repo, but have > it point to a ZIP file (either local or remote). -- This message was sent by Atlassian Jira (v8.20.10#820010)