Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-7357

All Maven Core JARs have unusual entry order

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 3.8.5, 4.0.0-alpha-1, 4.0.0
    • None
    • None

    Description

      Built from 3a06530dbce82e2054afa3cc4c81631910474bd0 I receive this:

      mosipov@bsd1srv:/usr/home/mosipov/var/Projekte/maven (master *=)
      $ find . -name maven-\*4.0.0-alpha-1-SNAPSHOT.jar -type f -exec sh -c 'zipinfo {} | head -4' \; 2>&1 | less
      Archive:  ./maven-bom/target/maven-bom-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 7277 bytes, number of entries: 10
      -rw-r--r--  2.0 unx      358 b- defN 20-Jan-26 09:04 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 20-Jan-26 09:04 META-INF/
      Archive:  ./maven-model-builder/target/maven-model-builder-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 217583 bytes, number of entries: 173
      -rw-r--r--  2.0 unx      352 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-model/target/maven-model-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 203201 bytes, number of entries: 76
      -rw-r--r--  2.0 unx      336 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-slf4j-provider/target/maven-slf4j-provider-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 25315 bytes, number of entries: 26
      Archive:  ./maven-bom/target/maven-bom-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 7277 bytes, number of entries: 10
      -rw-r--r--  2.0 unx      358 b- defN 20-Jan-26 09:04 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 20-Jan-26 09:04 META-INF/
      Archive:  ./maven-model-builder/target/maven-model-builder-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 217583 bytes, number of entries: 173
      -rw-r--r--  2.0 unx      352 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-model/target/maven-model-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 203201 bytes, number of entries: 76
      -rw-r--r--  2.0 unx      336 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-slf4j-provider/target/maven-slf4j-provider-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 25315 bytes, number of entries: 26
      Archive:  ./maven-bom/target/maven-bom-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 7277 bytes, number of entries: 10
      -rw-r--r--  2.0 unx      358 b- defN 20-Jan-26 09:04 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 20-Jan-26 09:04 META-INF/
      Archive:  ./maven-model-builder/target/maven-model-builder-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 217583 bytes, number of entries: 173
      -rw-r--r--  2.0 unx      352 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-model/target/maven-model-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 203201 bytes, number of entries: 76
      -rw-r--r--  2.0 unx      336 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-slf4j-provider/target/maven-slf4j-provider-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 25315 bytes, number of entries: 26
      Archive:  ./maven-bom/target/maven-bom-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 7277 bytes, number of entries: 10
      -rw-r--r--  2.0 unx      358 b- defN 20-Jan-26 09:04 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 20-Jan-26 09:04 META-INF/
      Archive:  ./maven-model-builder/target/maven-model-builder-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 217583 bytes, number of entries: 173
      -rw-r--r--  2.0 unx      352 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-model/target/maven-model-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 203201 bytes, number of entries: 76
      -rw-r--r--  2.0 unx      336 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-slf4j-provider/target/maven-slf4j-provider-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 25315 bytes, number of entries: 26
      Archive:  ./maven-bom/target/maven-bom-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 7277 bytes, number of entries: 10
      -rw-r--r--  2.0 unx      358 b- defN 20-Jan-26 09:04 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 20-Jan-26 09:04 META-INF/
      Archive:  ./maven-model-builder/target/maven-model-builder-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 217583 bytes, number of entries: 173
      -rw-r--r--  2.0 unx      352 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-model/target/maven-model-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 203201 bytes, number of entries: 76
      -rw-r--r--  2.0 unx      336 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-slf4j-provider/target/maven-slf4j-provider-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 25315 bytes, number of entries: 26
      Archive:  ./maven-bom/target/maven-bom-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 7277 bytes, number of entries: 10
      -rw-r--r--  2.0 unx      358 b- defN 20-Jan-26 09:04 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 20-Jan-26 09:04 META-INF/
      Archive:  ./maven-model-builder/target/maven-model-builder-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 217583 bytes, number of entries: 173
      -rw-r--r--  2.0 unx      352 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-model/target/maven-model-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 203201 bytes, number of entries: 76
      -rw-r--r--  2.0 unx      336 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-slf4j-provider/target/maven-slf4j-provider-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 25315 bytes, number of entries: 26
      -rw-r--r--  2.0 unx      368 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-settings-builder/target/maven-settings-builder-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 42653 bytes, number of entries: 53
      -rw-r--r--  2.0 unx      358 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-toolchain-model/target/maven-toolchain-model-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 21015 bytes, number of entries: 24
      -rw-r--r--  2.0 unx      356 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-resolver-provider/target/maven-resolver-provider-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 73050 bytes, number of entries: 49
      -rw-r--r--  2.0 unx      378 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-embedder/target/maven-embedder-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 101384 bytes, number of entries: 77
      -rw-r--r--  2.0 unx      342 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-model-transform/target/maven-model-transform-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 29090 bytes, number of entries: 31
      -rw-r--r--  2.0 unx      364 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-repository-metadata/target/maven-repository-metadata-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 27175 bytes, number of entries: 27
      -rw-r--r--  2.0 unx      376 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-slf4j-wrapper/target/maven-slf4j-wrapper-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 8826 bytes, number of entries: 16
      -rw-r--r--  2.0 unx      352 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-toolchain-builder/target/maven-toolchain-builder-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 22110 bytes, number of entries: 32
      -rw-r--r--  2.0 unx      360 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-builder-support/target/maven-builder-support-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 15048 bytes, number of entries: 24
      -rw-r--r--  2.0 unx      356 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-artifact/target/maven-artifact-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 58253 bytes, number of entries: 59
      -rw-r--r--  2.0 unx      410 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-settings/target/maven-settings-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 44299 bytes, number of entries: 35
      -rw-r--r--  2.0 unx      342 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-core/target/maven-core-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 667682 bytes, number of entries: 507
      -rw-r--r--  2.0 unx      334 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-compat/target/maven-compat-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 286906 bytes, number of entries: 212
      -rw-r--r--  2.0 unx      338 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      Archive:  ./maven-plugin-api/target/maven-plugin-api-4.0.0-alpha-1-SNAPSHOT.jar
      Zip file size: 46443 bytes, number of entries: 45
      -rw-r--r--  2.0 unx      346 b- defN 21-Apr-05 08:12 META-INF/MANIFEST.MF
      drwxr-xr-x  2.0 unx        0 b- stor 21-Apr-05 08:12 META-INF/
      

      META-INF/MANIFEST.MF comes before META-INF/ which does not make any sense logically. Either the dir should come first or the not at all and it is implied. My unzip(1) says:

      $ unzip /tmp/maven-plugin-api-4.0.0-alpha-1-SNAPSHOT.jar
      Archive:  /tmp/maven-plugin-api-4.0.0-alpha-1-SNAPSHOT.jar
        inflating: META-INF/MANIFEST.MF
         creating: org/
         creating: org/apache/
         creating: org/apache/maven/
         creating: org/apache/maven/plugin/
         creating: org/apache/maven/plugin/descriptor/
         creating: org/apache/maven/plugin/lifecycle/
         creating: org/apache/maven/plugin/lifecycle/io/
         creating: org/apache/maven/plugin/lifecycle/io/xpp3/
         creating: org/apache/maven/plugin/logging/
         creating: META-INF/maven/
         creating: META-INF/maven/org.apache.maven/
         creating: META-INF/maven/org.apache.maven/maven-plugin-api/
        inflating: META-INF/DEPENDENCIES
        inflating: META-INF/LICENSE
        inflating: META-INF/NOTICE
        inflating: org/apache/maven/plugin/AbstractMojo.class
        inflating: org/apache/maven/plugin/AbstractMojoExecutionException.class
        inflating: org/apache/maven/plugin/ContextEnabled.class
        inflating: org/apache/maven/plugin/Mojo.class
        inflating: org/apache/maven/plugin/MojoExecutionException.class
        inflating: org/apache/maven/plugin/MojoFailureException.class
        inflating: org/apache/maven/plugin/MojoNotFoundException.class
        inflating: org/apache/maven/plugin/descriptor/DuplicateMojoDescriptorException.class
        inflating: org/apache/maven/plugin/descriptor/DuplicateParameterException.class
        inflating: org/apache/maven/plugin/descriptor/InvalidParameterException.class
        inflating: org/apache/maven/plugin/descriptor/InvalidPluginDescriptorException.class
        inflating: org/apache/maven/plugin/descriptor/MojoDescriptor.class
        inflating: org/apache/maven/plugin/descriptor/Parameter.class
        inflating: org/apache/maven/plugin/descriptor/PluginDescriptor.class
        inflating: org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.class
        inflating: org/apache/maven/plugin/descriptor/Requirement.class
        inflating: org/apache/maven/plugin/lifecycle/Execution.class
        inflating: org/apache/maven/plugin/lifecycle/Lifecycle.class
        inflating: org/apache/maven/plugin/lifecycle/LifecycleConfiguration.class
        inflating: org/apache/maven/plugin/lifecycle/Phase.class
        inflating: org/apache/maven/plugin/lifecycle/io/xpp3/LifecycleMappingsXpp3Reader$1.class
        inflating: org/apache/maven/plugin/lifecycle/io/xpp3/LifecycleMappingsXpp3Reader$ContentTransformer.class
        inflating: org/apache/maven/plugin/lifecycle/io/xpp3/LifecycleMappingsXpp3Reader.class
        inflating: org/apache/maven/plugin/lifecycle/io/xpp3/LifecycleMappingsXpp3Writer.class
        inflating: org/apache/maven/plugin/logging/Log.class
        inflating: org/apache/maven/plugin/logging/SystemStreamLog.class
        inflating: META-INF/maven/org.apache.maven/maven-plugin-api/pom.xml
        inflating: META-INF/maven/org.apache.maven/maven-plugin-api/pom.properties
      

      It completely omits the META-INF/ entry. Weird also. This may vary from implementation to implementation. jar(1) first inflates the manifest file then creates the dir (ha ha):

      $ LANG=C jar -xvf /tmp/maven-plugin-api-4.0.0-alpha-1-SNAPSHOT.jar
       inflated: META-INF/MANIFEST.MF
        created: META-INF/
        created: org/
        created: org/apache/
        created: org/apache/maven/
        created: org/apache/maven/plugin/
        created: org/apache/maven/plugin/descriptor/
        created: org/apache/maven/plugin/lifecycle/
        created: org/apache/maven/plugin/lifecycle/io/
        created: org/apache/maven/plugin/lifecycle/io/xpp3/
        created: org/apache/maven/plugin/logging/
        created: META-INF/maven/
        created: META-INF/maven/org.apache.maven/
        created: META-INF/maven/org.apache.maven/maven-plugin-api/
       inflated: META-INF/DEPENDENCIES
       inflated: META-INF/LICENSE
       inflated: META-INF/NOTICE
       inflated: org/apache/maven/plugin/AbstractMojo.class
       inflated: org/apache/maven/plugin/AbstractMojoExecutionException.class
       inflated: org/apache/maven/plugin/ContextEnabled.class
       inflated: org/apache/maven/plugin/Mojo.class
       inflated: org/apache/maven/plugin/MojoExecutionException.class
       inflated: org/apache/maven/plugin/MojoFailureException.class
       inflated: org/apache/maven/plugin/MojoNotFoundException.class
       inflated: org/apache/maven/plugin/descriptor/DuplicateMojoDescriptorException.class
       inflated: org/apache/maven/plugin/descriptor/DuplicateParameterException.class
       inflated: org/apache/maven/plugin/descriptor/InvalidParameterException.class
       inflated: org/apache/maven/plugin/descriptor/InvalidPluginDescriptorException.class
       inflated: org/apache/maven/plugin/descriptor/MojoDescriptor.class
       inflated: org/apache/maven/plugin/descriptor/Parameter.class
       inflated: org/apache/maven/plugin/descriptor/PluginDescriptor.class
       inflated: org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.class
       inflated: org/apache/maven/plugin/descriptor/Requirement.class
       inflated: org/apache/maven/plugin/lifecycle/Execution.class
       inflated: org/apache/maven/plugin/lifecycle/Lifecycle.class
       inflated: org/apache/maven/plugin/lifecycle/LifecycleConfiguration.class
       inflated: org/apache/maven/plugin/lifecycle/Phase.class
       inflated: org/apache/maven/plugin/lifecycle/io/xpp3/LifecycleMappingsXpp3Reader$1.class
       inflated: org/apache/maven/plugin/lifecycle/io/xpp3/LifecycleMappingsXpp3Reader$ContentTransformer.class
       inflated: org/apache/maven/plugin/lifecycle/io/xpp3/LifecycleMappingsXpp3Reader.class
       inflated: org/apache/maven/plugin/lifecycle/io/xpp3/LifecycleMappingsXpp3Writer.class
       inflated: org/apache/maven/plugin/logging/Log.class
       inflated: org/apache/maven/plugin/logging/SystemStreamLog.class
       inflated: META-INF/maven/org.apache.maven/maven-plugin-api/pom.xml
       inflated: META-INF/maven/org.apache.maven/maven-plugin-api/pom.properties
      

      I checked the system calls of unzip(1) and jar(1) and both test for parent of the manifest file, create it, then write the file. The next test tests for META-INF/ and skips it because it is already present.

      I would expect that our JARs would not expose such an oddity. I guess the cause is in Maven/Plexus Archiver or Commons Compress.

      Attachments

        1. screenshot-1.png
          21 kB
          Michael Osipov
        2. zipinfo-maven-master.txt
          158 kB
          Michael Osipov

        Issue Links

          Activity

            People

              michael-o Michael Osipov
              michael-o Michael Osipov
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: