Hello, There is discussion on Plexus Archiver about symbolic links and Windows[1]. Currently if a file set is added to an archive and the OS is Windows the symbolic links are followed. That is, instead of the symbolic links, the resulting archive contains the files they point to. For some time Java was not able to work with symbolic links on Windows, but that is no longer the case. Windows supports symbolic links since Vista and if you have the required permissions Java works perfectly fine with the them.
There is proposal to change the default behavior of Plexus Archiver - to make it consistent across the OSes and to not follow the symbolic links when a file set is added to an archive. Then regardless of the OS, the resulting archive will contain the symbolic links and not copies of the files they point to. I have two concerns about that. The first one is the path separator. A symbolic links on Windows will look something like `src\fileR.txt`. When the archive is extracted on Linux the symbolic link will be broken. It will point to the `src\fileR.txt` file (a perfectly valid name for a file on Linux) and not to the `fileR.txt` file inside the `src` directory. So I think we should normalize the paths on Windows. The link added should point to `src/fileR.txt`. I think this will work both on Windows and Linux, but I'm not 100% sure. Would be great if somebody with more experience on the matter could confirm that. My second concern is the effect that this change will have on Maven plug-ins such as the Assembly plug-in. Imagine a project that creates a distribution package and one of the directories contains some symbolic links. With the current implementation if the package is created on Windows, it will contains duplicated files. In many cases that could be a desired behavior. By default you have to be admin user to create symbolic links and many tools on Windows does not support symbolic links. Including some (if not most) of the popular archivers. If we change the Plexus Archiver default behavior we may broke projects like this one. The resulting Windows package will contain symbolic links but this may result in poor user experience as many archive programs will no handle it properly. What do you think? Will such a change in the Plexus Archive break projects or my concern is undue? Probably the benefits of having consistent behavior on all OSes are worth taking the risk? What do you think? Do you have any other concerns related to the support of symbolic links on Windows. Regards, Plamen Totev p.s. Microsoft is trying to improve the support for symbolic links. The Windows 10 Creators update will contain some improvements that will allow non-admin users to create symbolic links and Microsoft is "working with the owners of open-source community tools such as Git and npm so they know symlink improvements are coming and can make the necessary changes to better support symlinks on Windows" [2]. [1] https://github.com/codehaus-plexus/plexus-archiver/issues/47 [2] https://blogs.windows.com/buildingapps/2016/12/02/symlinks-windows-10 --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org For additional commands, e-mail: dev-h...@maven.apache.org