You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Thorsten Glaser (Jira)" <ji...@apache.org> on 2022/01/07 22:45:00 UTC

[jira] [Commented] (MSHARED-1004) Two (2) issues with symbolic links

    [ https://issues.apache.org/jira/browse/MSHARED-1004?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17470931#comment-17470931 ] 

Thorsten Glaser commented on MSHARED-1004:
------------------------------------------

First, making a distinction between what the symlink points to (at copy time) is really useless: it may be dangling in the source but correct in the copied location (I have repositories like that!), and IMHO (see also below), you either follow symlinks encountered in the source directory or you don’t (whether you then also follow symlinks enocountered in the pointed-to directory is another matter, but for consistency with filtering (see below) I think that Maven needs to either follow all symlinks recursively or not touch them at all).
----
Turns out that there are +*three*+ distinct cases, to apply for each {{<resource>}} directory:
 * {{<filtering>true</filtering>}} — here, the symlinks are always followed because the files themselves are possibly manipulated
 * {{<filtering>false</filtering>}} with symlinks followed by default (m-r-p 2.x behaviour)
 * {{<filtering>false</filtering>}} with symlinks copied as-is (m-r-p 3.0/3.1 behaviour)

And it also turns out I need to be able to mix them in a project, so I’m now even stronger in favour of an option per resource directory (or otherwise configured).

> Two (2) issues with symbolic links
> ----------------------------------
>
>                 Key: MSHARED-1004
>                 URL: https://issues.apache.org/jira/browse/MSHARED-1004
>             Project: Maven Shared Components
>          Issue Type: Bug
>          Components: maven-filtering
>    Affects Versions: maven-filtering-3.3.0
>            Reporter: Jimisola Laursen
>            Priority: Major
>         Attachments: my-app-wo-symlinks.tar.gz, my-app.tar.gz
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Two issues with (relative) symbolic links as resources (use attached file for reference and MWE:
>  
> {noformat}
> user@earhart:~/dev/test/my-app$ tree
> .
> ├── pom.xml
> ├── src
> │   ├── main
> │   │   ├── java
> │   │   │   └── com
> │   │   │       └── mycompany
> │   │   │           └── app
> │   │   │               └── App.java
> │   │   └── resources
> │   │       ├── B -> ../../../to_be_symlinked/B
> │   │       └── folder -> ../../../to_be_symlinked/folder
> │   └── test
> │       └── java
> │           └── com
> │               └── mycompany
> │                   └── app
> │                       └── AppTest.java
> └── to_be_symlinked
>     ├── B
>     └── folder
>         └── A{noformat}
>  
>  
>  
>  * Symlinks for directories copies the actual directory (folder/A) whereas symlinks for files copies the symlink (B). Note the difference between file A and B. B is pointing incorrectly since it is relative.
> {noformat}
> user@earhart:~/dev/test/my-app/target/classes$ ls -l
> total 8
> lrwxrwxrwx 1 user user   26 dec 10 10:19 B -> ../../../to_be_symlinked/B
> drwxrwxr-x 3 user user 4096 dec 10 10:19 com
> drwxrwxr-x 2 user user 4096 dec 10 10:19 folder
> user@earhart:~/dev/test/my-app/target/classes$ ls -l folder/
> total 0
> -rw-rw-r-- 1 user user 0 dec 10 10:19 A{noformat}
>  * Resources are not overwritten (java.nio.file.FileAlreadyExistsException). To reproduce run "mvn compile" two (2x) times:
> {noformat}
> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project my-app: copying /home/user/dev/test/my-app/src/main/resources/folder/A to /home/user/dev/test/my-app/target/classes/folder/A failed with FileAlreadyExistsException: /home/user/dev/test/my-app/target/classes/folder/A -{noformat}
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)