[ http://jira.codehaus.org/browse/MASSEMBLY-341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Casey closed MASSEMBLY-341. -------------------------------- Resolution: Duplicate Fix Version/s: 2.2-beta-3 See MASSEMBLY-285. The latest code supports the following plugin configuration: {code:xml} <archiverConfig> <duplicateBehavior>skip</duplicateBehavior> </archiverConfig> {code} The default setting is 'add' which allows duplicates. > Fat JAR assemblies may result in JARs with duplicate files > ---------------------------------------------------------- > > Key: MASSEMBLY-341 > URL: http://jira.codehaus.org/browse/MASSEMBLY-341 > Project: Maven 2.x Assembly Plugin > Issue Type: Bug > Environment: Maven 2.0.8 > Reporter: Daniel Gredler > Assignee: John Casey > Fix For: 2.2-beta-3 > > > When building a fat JAR assembly (format=jar, dependencySet.unpack=true), if > some of the dependencies contain files with the same path and name as files > in any other dependencies and/or the current project, the generated JAR file > contains duplicate files. > The root issue is that ZIP files allow duplicate files, and JAR files are > just special ZIP files. However, when a JAR file contains duplicate files, > the results are unpredictable -- there's no way to know which file "wins." > Internally, (as far as I can tell) Maven's DefaultAssemblyArchiver [2] uses > an ArchiverManager to get an Archiver based on the format name ("jar"). This > Archiver is probably a MavenArchiver [3], which delegates to a JarArchiver > [4], which is a subclass of ZipArchiver [5] and AbstractZipArchiver [6]. > AbstractZipArchiver has a protected instance variable of type String named > "duplicate", the values of which can be one of "preserve", "fail" and "add". > The default is "add". > I'm not sure if this needs to be fixed at the JarArchiver level (initialize > the "duplicate" instance var to "preserve"), or at the > DefaultAssemblyArchiver level (as was done with WAR assemblies for MNG-1274 > -- see the createWarArchiver() method), or somewhere else. > As an example of how other projects handle this, Ant's Jar task documentation > page [1] includes a bolded warning which describes the issue and provides the > "duplicate" attribute, which can be set to "add", "preserve" or "fail". > [1] http://ant.apache.org/manual/CoreTasks/jar.html > [2] > http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java > [3] http://maven.apache.org/shared/maven-archiver/xref/index.html > [4] > http://fisheye.codehaus.org/browse/~raw,r=4612/plexus/plexus-components/trunk/plexus-archiver/src/main/java/org/codehaus/plexus/archiver/jar/JarArchiver.java > [5] > http://fisheye.codehaus.org/browse/~raw,r=4573/plexus/plexus-components/trunk/plexus-archiver/src/main/java/org/codehaus/plexus/archiver/zip/ZipArchiver.java > [6] > http://fisheye.codehaus.org/browse/~raw,r=4573/plexus/plexus-components/trunk/plexus-archiver/src/main/java/org/codehaus/plexus/archiver/zip/AbstractZipArchiver.java -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira