Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.3:shade (default) on project –: Error creating shaded jar: INVOKESPECIAL/STATIC on interfaces require ASM 5 -> [Help 1]
我试图阴影的jar文件位于my own remote repository,使用sonatype nexus.这是我的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.codelanx</groupId>
- <artifactId>phanaticprison</artifactId>
- <version>1.0.0</version>
- <name>PhanaticPrison</name>
- <packaging>jar</packaging>
- <repositories>
- <repository>
- <id>bukkit-repo</id>
- <url>http://repo.bukkit.org/content/repositories/public/</url>
- </repository>
- <repository>
- <id>codelanx-repo</id>
- <url>http://repo.codelanx.com/content/repositories/public/</url>
- </repository>
- </repositories>
- <licenses>
- <license>
- <name>Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International</name>
- <url>https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode</url>
- <distribution>repo</distribution>
- </license>
- </licenses>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
- <version>2.3</version>
- <configuration>
- <artifactSet>
- <includes>
- <include>com.codelanx:codelanxlib</include>
- </includes>
- </artifactSet>
- <minimizeJar>true</minimizeJar>
- </configuration>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <resources>
- <resource>
- <targetPath>.</targetPath>
- <directory>${basedir}/src/main/resources</directory>
- <filtering>true</filtering>
- </resource>
- </resources>
- <finalName>${project.name}</finalName>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.bukkit</groupId>
- <artifactId>bukkit</artifactId>
- <version>LATEST</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>com.codelanx</groupId>
- <artifactId>codelanxlib</artifactId>
- <version>LATEST</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- </properties>
- </project>
谷歌搜索错误导致很少的结果,我收集的信息的主要部分是Java 8’s static interface methods could cause this,但我还没有找到更多. jar文件我试图遮蔽does indeed have one of these static methods,但即使我仍然必须能够使用它们并遮住罐子?我不确定错误意味着要求“ASM 5”(汇编?),所以任何方向都会受到赞赏.
我有效的pom(mvn help:effective-pom):
- <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.phanaticmc</groupId>
- <artifactId>phanaticprison</artifactId>
- <version>1.0.0</version>
- <name>PhanaticPrison</name>
- <licenses>
- <license>
- <name>Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International</name>
- <url>https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode</url>
- <distribution>repo</distribution>
- </license>
- </licenses>
- <properties>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.bukkit</groupId>
- <artifactId>bukkit</artifactId>
- <version>LATEST</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.codelanx</groupId>
- <artifactId>codelanxlib</artifactId>
- <version>LATEST</version>
- <scope>compile</scope>
- </dependency>
- </dependencies>
- <repositories>
- <repository>
- <id>bukkit-repo</id>
- <url>http://repo.bukkit.org/content/repositories/public/</url>
- </repository>
- <repository>
- <id>codelanx-repo</id>
- <url>http://repo.codelanx.com/content/repositories/public/</url>
- </repository>
- <repository>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- <id>central</id>
- <name>Central Repository</name>
- <url>http://repo.maven.apache.org/maven2</url>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <releases>
- <updatePolicy>never</updatePolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- <id>central</id>
- <name>Central Repository</name>
- <url>http://repo.maven.apache.org/maven2</url>
- </pluginRepository>
- </pluginRepositories>
- <build>
- <sourceDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\src\main\java</sourceDirectory>
- <scriptSourceDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\src\main\scripts</scriptSourceDirectory>
- <testSourceDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\src\test\java</testSourceDirectory>
- <outputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\classes</outputDirectory>
- <testOutputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\test-classes</testOutputDirectory>
- <resources>
- <resource>
- <targetPath>.</targetPath>
- <filtering>true</filtering>
- <directory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\src\main\resources</directory>
- </resource>
- </resources>
- <testResources>
- <testResource>
- <directory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\src\test\resources</directory>
- </testResource>
- </testResources>
- <directory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target</directory>
- <finalName>PhanaticPrison</finalName>
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-antrun-plugin</artifactId>
- <version>1.3</version>
- </plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.2-beta-5</version>
- </plugin>
- <plugin>
- <artifactId>maven-dependency-plugin</artifactId>
- <version>2.1</version>
- </plugin>
- <plugin>
- <artifactId>maven-release-plugin</artifactId>
- <version>2.0</version>
- </plugin>
- </plugins>
- </pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.4</version>
- </plugin>
- <plugin>
- <artifactId>maven-dependency-plugin</artifactId>
- <version>2.8</version>
- </plugin>
- <plugin>
- <artifactId>maven-shade-plugin</artifactId>
- <version>2.3</version>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- <configuration>
- <artifactSet>
- <includes>
- <include>com.codelanx:codelanxlib</include>
- </includes>
- </artifactSet>
- <minimizeJar>true</minimizeJar>
- </configuration>
- </execution>
- </executions>
- <configuration>
- <artifactSet>
- <includes>
- <include>com.codelanx:codelanxlib</include>
- </includes>
- </artifactSet>
- <minimizeJar>true</minimizeJar>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <executions>
- <execution>
- <id>default-clean</id>
- <phase>clean</phase>
- <goals>
- <goal>clean</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-resources-plugin</artifactId>
- <version>2.5</version>
- <executions>
- <execution>
- <id>default-testResources</id>
- <phase>process-test-resources</phase>
- <goals>
- <goal>testResources</goal>
- </goals>
- </execution>
- <execution>
- <id>default-resources</id>
- <phase>process-resources</phase>
- <goals>
- <goal>resources</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.3.2</version>
- <executions>
- <execution>
- <id>default-jar</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.3.2</version>
- <executions>
- <execution>
- <id>default-compile</id>
- <phase>compile</phase>
- <goals>
- <goal>compile</goal>
- </goals>
- </execution>
- <execution>
- <id>default-testCompile</id>
- <phase>test-compile</phase>
- <goals>
- <goal>testCompile</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.10</version>
- <executions>
- <execution>
- <id>default-test</id>
- <phase>test</phase>
- <goals>
- <goal>test</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-install-plugin</artifactId>
- <version>2.3.1</version>
- <executions>
- <execution>
- <id>default-install</id>
- <phase>install</phase>
- <goals>
- <goal>install</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-deploy-plugin</artifactId>
- <version>2.7</version>
- <executions>
- <execution>
- <id>default-deploy</id>
- <phase>deploy</phase>
- <goals>
- <goal>deploy</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-site-plugin</artifactId>
- <version>3.0</version>
- <executions>
- <execution>
- <id>default-site</id>
- <phase>site</phase>
- <goals>
- <goal>site</goal>
- </goals>
- <configuration>
- <outputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\site</outputDirectory>
- <reportPlugins>
- <reportPlugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-project-info-reports-plugin</artifactId>
- </reportPlugin>
- </reportPlugins>
- </configuration>
- </execution>
- <execution>
- <id>default-deploy</id>
- <phase>site-deploy</phase>
- <goals>
- <goal>deploy</goal>
- </goals>
- <configuration>
- <outputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\site</outputDirectory>
- <reportPlugins>
- <reportPlugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-project-info-reports-plugin</artifactId>
- </reportPlugin>
- </reportPlugins>
- </configuration>
- </execution>
- </executions>
- <configuration>
- <outputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\site</outputDirectory>
- <reportPlugins>
- <reportPlugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-project-info-reports-plugin</artifactId>
- </reportPlugin>
- </reportPlugins>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <reporting>
- <outputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\site</outputDirectory>
- </reporting>
- </project>
完整的maven堆栈跟踪:
- org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.3:shade (default) on project phanaticprison: Error creating shaded jar: INVOKESPECIAL/STATIC on interfaces require ASM 5
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
- at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
- at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
- at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
- at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
- at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
- at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
- at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
- at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
- at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:483)
- at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
- at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
- at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
- at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
- Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating shaded jar: INVOKESPECIAL/STATIC on interfaces require ASM 5
- at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:566)
- at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
- ... 19 more
- Caused by: java.lang.IllegalArgumentException: INVOKESPECIAL/STATIC on interfaces require ASM 5
- at org.objectweb.asm.MethodVisitor.visitMethodInsn(Unknown Source)
- at org.objectweb.asm.commons.RemappingMethodAdapter.doVisitMethodInsn(Unknown Source)
- at org.objectweb.asm.commons.RemappingMethodAdapter.visitMethodInsn(Unknown Source)
- at org.objectweb.asm.ClassReader.a(Unknown Source)
- at org.objectweb.asm.ClassReader.b(Unknown Source)
- at org.objectweb.asm.ClassReader.accept(Unknown Source)
- at org.objectweb.asm.ClassReader.accept(Unknown Source)
- at org.vafer.jdependency.Clazzpath.addClazzpathUnit(Clazzpath.java:194)
- at org.vafer.jdependency.Clazzpath.addClazzpathUnit(Clazzpath.java:130)
- at org.apache.maven.plugins.shade.filter.MinijarFilter.addDependencyToClasspath(MinijarFilter.java:101)
- at org.apache.maven.plugins.shade.filter.MinijarFilter.<init>(MinijarFilter.java:81)
- at org.apache.maven.plugins.shade.mojo.ShadeMojo.getFilters(ShadeMojo.java:805)
- at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:458)
- ... 21 more
解决方法
ASM所需的版本是5.0.3.但是,shade插件中当前可用的版本是5.0.2.看看JIRA的门票,它看起来已经在2.4中得到了修复,但是那个版本还没有为公众所用(2015年5月4日到我写这篇文章的时候).
所以你要做的就是通过将这个部分添加到你的pom来激活开发者版本(基于https://maven.apache.org/guides/development/guide-testing-development-plugins.html):
- <pluginRepositories>
- <pluginRepository>
- <id>apache.snapshots</id>
- <url>http://repository.apache.org/snapshots/</url>
- </pluginRepository>
- </pluginRepositories>
并将插件的版本设置为2.4-SNAPSHOT:
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
- <version>2.4-SNAPSHOT</version>
- </plugin>
- </plugins>
希望这可以帮助!