Hi,

after diving more into this..

I found that if I upgrade plexus-utils to 3.1.0 in plexus-archiver the tests in plexus-archiver stuck completely...as I already observed (which I though was another cause)...

https://travis-ci.org/codehaus-plexus/plexus-archiver/jobs/321821294

So more diving into the details I realized that the following code in plexus-utils causes the issue:

FileUtils.java:

    private static void doCopyFile( File source, File destination )
        throws IOException
    {
        // offload to operating system if supported
        if ( Java7Detector.isJava7() )
        {
            doCopyFileUsingNewIO( source, destination );
        }
        else
        {
            doCopyFileUsingLegacyIO( source, destination );
        }
    }

The real issue is located in the implementation of doCopyFileUsingNewIO which uses:



    public static File copy( File source, File target )
        throws IOException
    {
        Path copy = Files.copy( source.toPath(), target.toPath(),
                   StandardCopyOption.REPLACE_EXISTING,
                   StandardCopyOption.COPY_ATTRIBUTES,
                   LinkOption.NOFOLLOW_LINKS );
        return copy.toFile();
    }

and If I correctly understand the whole thing is the real cause of that based on the usage of StandardCopyOption.COPY_ATTRIBUTES which includes copying of the last-modified of the file...which means not to change the last-modified entry of the file and in result that is the reason of not changing it and the stucking of the unit test in plexus-archiver...(see travis build above)..


After I have changed that and only use

    public static File copy( File source, File target )
        throws IOException
    {
        Path copy = Files.copy( source.toPath(), target.toPath(),
                   StandardCopyOption.REPLACE_EXISTING,
                   LinkOption.NOFOLLOW_LINKS );
        return copy.toFile();
    }

it looks like working (see branch issue-fix):

What Do you think?

Kind regards
Karl Heinz Marbaise

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to