maven 创建阴影 jar 时出错:打开 zip 文件时出错

maven Error creating shaded jar: error in opening zip file

我正在尝试使用以下命令构建我的 dropwizard 项目:

mvn package

我收到以下错误:

Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.3:shade (default) on project rest-api: Error creating shaded jar: error in opening zip file /Users/ldelaney/.m2/repository/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar

我已经检查过了,jar 就在那里,就在 maven 正在寻找的地方。

我也试过吹走,运行 :

mvn clean
mvn package

但错误不会消失。我的 IDE 没有显示任何错误。

此外,这是我在 POM 中的依赖项:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.36</version>
</dependency>

这是整个 POM 文件。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.company.test</groupId>
<artifactId>rest-api</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <dropwizard.version>1.0.5</dropwizard.version>
    <mongodriver.version>3.4.2</mongodriver.version>
    <mysqlConnector.version>5.1.36</mysqlConnector.version>
    <log4j.version>1.2.17</log4j.version>
</properties>

<dependencies>

    <!-- Drop Wizard -->
    <dependency>
        <groupId>io.dropwizard</groupId>
        <artifactId>dropwizard-core</artifactId>
        <version>${dropwizard.version}</version>
    </dependency>
    <dependency>
        <groupId>io.dropwizard</groupId>
        <artifactId>dropwizard-auth</artifactId>
        <version>${dropwizard.version}</version>
    </dependency>
    <dependency>
        <groupId>io.dropwizard</groupId>
        <artifactId>dropwizard-db</artifactId>
        <version>${dropwizard.version}</version>
    </dependency>
    <dependency>
        <groupId>io.dropwizard</groupId>
        <artifactId>dropwizard-hibernate</artifactId>
        <version>${dropwizard.version}</version>
    </dependency>

    <!-- MYSQL and Hibernate -->

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysqlConnector.version}</version>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.193</version>
    </dependency>

    <!-- Log4j dependencies -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <createDependencyReducedPom>true</createDependencyReducedPom>
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                    </filter>
                </filters>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>application.ServerApplication</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

有人有什么想法吗?

从 OP 响应来看,.m2/repository/mysql-connector-java/5.1.36 中似乎只有 pom.xml 文件。请执行以下操作,

  1. 如果您在组织中使用 nexus 或 artifactory 存储库。删除 mysql-connector 坐标和相应的 pom.xml 文件。
  2. 确保您的防火墙已配置为可以从 here 下载文件。中央存储库默认配置有 maven 安装。
  3. 如果您使用的是 Maven 2,请升级到 Maven 3。

我刚刚复制了您的 pom,并且能够成功构建。我也没有人工制品或联系。你可以尝试关注,

  1. 转到您的 Maven 安装并指定不同的存储库位置。您应该转到 /conf/settings.xml 并取消注释并将 <localRepository>/path/to/local/repo</localRepository> 更改为路径。确保对该路径执行 chmod +777。
  2. 如果问题仍然存在,请手动下载 mysql-connector-java-5.1.36.jar 并将其放置在那里。看看能不能用。
  3. 如果 2 不起作用,则再次尝试步骤 2,但 运行 mvn 带有 -o 标志。这是离线标志,maven 不会下载依赖项。

如果它不起作用,你能用 -X 标志显示你的 maven 输出吗,

mvn -U -X -e install  

遇到这个问题:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project xxx: Error creating shaded jar: error in opening zip file /Users/username/.m2/repository/org/codehaus/groovy/groovy/2.2.0/groovy-2.2.0.jar -> [Help 1]

解决方案是 rm -rf /Users/username/.m2/repository/org/codehaus/groovy/groovy/2.2.0 然后它重新下载并再次开始工作。如果有帮助的话。