You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Hasnae Rehioui (JIRA)" <ji...@apache.org> on 2019/04/26 14:59:00 UTC
[jira] [Created] (MDEP-651) unpack-dependencies should warn when it
overrides extracted files on macos (case insensitive FS)
Hasnae Rehioui created MDEP-651:
-----------------------------------
Summary: unpack-dependencies should warn when it overrides extracted files on macos (case insensitive FS)
Key: MDEP-651
URL: https://issues.apache.org/jira/browse/MDEP-651
Project: Maven Dependency Plugin
Issue Type: Wish
Components: unpack-dependencies
Affects Versions: 3.1.1
Reporter: Hasnae Rehioui
*Background :*
We are upgrading to a recent version of aspose-imaging and ran into an issue with our `unpack-dependencies` configuration when ran locally *on macos*
This is affecting our dev loop mostly, you can reproduce it with
{code:java}
git clone https://github.com/viqueen/maven-playground
cd maven-playground
mvn test{code}
long story short :
`maven-dependency-plugin` has the `unpack-dependencies` mojo that relies on plexus un-archiver which in a file system like mac (not case sensitive) , might end up overriding files , leading in some cases to a corrupted class path , aspose-imaging library is an example of that : it contains classes and interfaces named as follow : com.aspose.internal.imaging.gq/aq (interface) , com.aspose.internal.imaging.gq/aQ (class implementing the interface) , notice the case sensitive naming
so on mac , the plugin will override the aq interface with the content of aQ type , leading to a NoClassDefFoundError because the file name and its content do not match
{code:java}
java.lang.NoClassDefFoundError: com/aspose/imaging/internal/gq/aq (wrong name: com/aspose/imaging/internal/gq/aQ)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
{code}
*Workaround :*
turns out our project config no longer requires unpacking dependencies so we disabled the thing
*Suggestion :*
not sure this is even fixable , but would be nice to have some debug / warning logs that it is happening so developers can diagnose errors more easily; basically throw in some love onto [https://github.com/viqueen/plexus-archiver/blob/master/src/main/java/org/codehaus/plexus/archiver/AbstractUnArchiver.java#L346]
in our particular use case , we are consuming the plugin through [https://bitbucket.org/atlassian/amps/src/903a1ce408da5b8500ed0d7e0e5701eb83d8cde4/amps-maven-plugin/src/main/java/com/atlassian/maven/plugins/amps/MavenGoals.java?at=8.0-stable&fileviewer=file-view-default#MavenGoals.java-458] , these internals are not exactly common knowledge and the logs were not helping either, they knew it was FS related though
so optionally failing the build if/when it happens could point our devs on the right track much faster
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)