首页 > 解决方案 > 使用 maven 在 zip 中损坏 JARS

问题描述

我有 maven 项目,我想打包在一个 zip 文件中,包括 jar 二进制文件(在文件夹 /jars 中)。打包后,我解压缩并提取了 jar 文件,但是当我调用它时出现以下错误:

PS C:\Users\kenochrome\Downloads> jar xf service-0.1.jar
java.util.zip.ZipException: invalid literal/length code
        at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:139)
        at java.util.zip.ZipInputStream.read(ZipInputStream.java:142)
        at sun.tools.jar.Main.extractFile(Main.java:715)
        at sun.tools.jar.Main.extract(Main.java:678)
        at sun.tools.jar.Main.run(Main.java:191)
        at sun.tools.jar.Main.main(Main.java:904)

下面是父子pom的片段。

父 POM

    <build>
        <finalName>release_1.0</finalName>
        <resources>
            <resource>
                <directory>${basedir}/hello/world/00006/jars</directory>
                <filtering>false</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.7</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                  <configuration>
                    <descriptor>assembly/bin.xml</descriptor>
                  </configuration>
                  <executions>
                    <execution>
                      <phase>package</phase>
                      <goals>
                        <goal>single</goal>
                      </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

子 POM

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>jar</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
                </plugin>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>scala-compile</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>add-source</goal>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>scala-test-compile</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <finalName>service-${project.version}</finalName>
                    <outputDirectory>../../jars</outputDirectory>
                    <resources>
                        <resource>
                            <directory>jars</directory>
                            <filtering>false</filtering>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
    </dependencies>
</project>

如果信息不充分或者这个问题的格式不正确,我很抱歉。

非常感谢您阅读这篇文章,并提前非常感谢。

标签: javascalamavenbuildjar

解决方案


正在浏览另一个论坛,发现我遇到的问题是<lineEnding>unix</lineEnding>在我的描述符程序集 xml 中使用该元素。


推荐阅读