Java Maven shade插件找不到';mainClass';例外?
在一个标准的maven项目中,有一个非常奇怪的版本,带有Java Maven shade插件找不到';mainClass';例外?,java,maven,maven-shade-plugin,Java,Maven,Maven Shade Plugin,在一个标准的maven项目中,有一个非常奇怪的版本,带有maven shade插件:2.4.3。执行maven package命令时,总是抛出找不到mainClass异常。我只是模拟了一个maven shade插件示例,如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht
maven shade插件:2.4.3
。执行maven package命令时,总是抛出找不到mainClass
异常。我只是模拟了一个maven shade插件示例,如下所示:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mkyong.core.utils</groupId>
<artifactId>dateUtils</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>dateUtils</name>
<url>http://maven.apache.org</url>
<properties>
<jdk.version>1.7</jdk.version>
<jodatime.version>2.5</jodatime.version>
<junit.version>4.11</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${jodatime.version}</version>
</dependency>
</dependencies>
<build>
<finalName>dateutils</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<!-- download source code in Eclipse, best practice -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>false</downloadJavadocs>
</configuration>
</plugin>
<!-- Set a compiler level -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<!-- Maven Shade Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<!-- Run shade goal on package phase -->
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.mkyong.core.utils.App</mainClass>
</transformer>
</transformers>
</configuration>
</plugin>
</plugins>
</build>
</project>
所以模块将扩展父级,但当包抛出异常时,表示:
[ERROR]无法执行goal org.apache.maven.plugins:maven shade plugin:2.4.3:shade(默认)在project analytics sdk storm local上:无法解析mojo org.apache.maven.plugins:maven shade plugin:2.4.3:shade for parameter mainClass:在类org.apache.maven.plugins.shade.resource.AppendingTransformer->[帮助1]
但是为什么会这样。有maven dependencies树显示:
[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ xxxxx ---
[INFO] local:jar:1.0.1-SNAPSHOT
[INFO] +- org.apache.kafka:kafka_2.10:jar:0.8.1.1:compile
[INFO] | +- com.yammer.metrics:metrics-core:jar:2.2.0:compile
[INFO] | +- org.xerial.snappy:snappy-java:jar:1.1.2:compile
[INFO] | +- net.sf.jopt-simple:jopt-simple:jar:3.2:compile
[INFO] | +- org.scala-lang:scala-library:jar:2.10.1:compile
[INFO] | \- com.101tec:zkclient:jar:0.3:compile
[INFO] +- org.apache.storm:storm-core:jar:0.9.3:provided
[INFO] | +- org.clojure:clojure:jar:1.5.1:provided
[INFO] | +- clj-time:clj-time:jar:0.4.1:provided
[INFO] | +- joda-time:joda-time:jar:2.8.2:provided
[INFO] | +- compojure:compojure:jar:1.1.3:provided
[INFO] | +- org.clojure:core.incubator:jar:0.1.0:provided
[INFO] | +- org.clojure:tools.macro:jar:0.1.0:provided
[INFO] | +- clout:clout:jar:1.0.1:provided
[INFO] | +- ring:ring-core:jar:1.1.5:provided
[INFO] | +- commons-fileupload:commons-fileupload:jar:1.3.1:provided
[INFO] | +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] | +- hiccup:hiccup:jar:0.3.6:provided
[INFO] | +- ring:ring-devel:jar:0.3.11:provided
[INFO] | +- clj-stacktrace:clj-stacktrace:jar:0.2.2:provided
[INFO] | +- ring:ring-jetty-adapter:jar:0.3.11:provided
[INFO] | +- ring:ring-servlet:jar:0.3.11:provided
[INFO] | +- org.mortbay.jetty:jetty:jar:6.1.26:provided
[INFO] | +- org.mortbay.jetty:jetty-util:jar:6.1.26:provided
[INFO] | +- org.clojure:tools.logging:jar:0.2.3:provided
[INFO] | +- org.clojure:math.numeric-tower:jar:0.0.1:provided
[INFO] | +- org.clojure:tools.cli:jar:0.2.4:provided
[INFO] | +- commons-io:commons-io:jar:2.4:provided
[INFO] | +- org.apache.commons:commons-exec:jar:1.1:provided
[INFO] | +- commons-lang:commons-lang:jar:2.5:provided
[INFO] | +- com.googlecode.json-simple:json-simple:jar:1.1.1:provided
[INFO] | | \- junit:junit:jar:4.12:provided
[INFO] | | \- org.hamcrest:hamcrest-core:jar:1.3:provided
[INFO] | +- com.twitter:carbonite:jar:1.4.0:provided
[INFO] | +- com.esotericsoftware.kryo:kryo:jar:2.21:provided
[INFO] | +- com.esotericsoftware.reflectasm:reflectasm:jar:shaded:1.07:provided
[INFO] | +- org.ow2.asm:asm:jar:4.0:compile
[INFO] | +- com.esotericsoftware.minlog:minlog:jar:1.2:provided
[INFO] | +- org.objenesis:objenesis:jar:1.2:compile
[INFO] | +- com.twitter:chill-java:jar:0.3.5:provided
[INFO] | +- org.yaml:snakeyaml:jar:1.16:provided
[INFO] | +- commons-logging:commons-logging:jar:1.1.3:provided
[INFO] | +- commons-codec:commons-codec:jar:1.9:provided
[INFO] | +- com.googlecode.disruptor:disruptor:jar:2.10.1:provided
[INFO] | +- org.jgrapht:jgrapht-core:jar:0.9.0:provided
[INFO] | +- ch.qos.logback:logback-classic:jar:1.1.5:provided
[INFO] | +- ch.qos.logback:logback-core:jar:1.0.13:provided
[INFO] | +- org.slf4j:slf4j-api:jar:1.7.12:compile
[INFO] | +- org.slf4j:log4j-over-slf4j:jar:1.7.16:provided
[INFO] | \- jline:jline:jar:2.11:compile
[INFO] +- org.apache.storm:storm-kafka:jar:0.9.3:compile
[INFO] | \- org.apache.curator:curator-framework:jar:2.5.0:compile
[INFO] | +- org.apache.curator:curator-client:jar:2.5.0:compile
[INFO] | +- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
[INFO] | | \- io.netty:netty:jar:3.7.0.Final:compile
[INFO] | \- com.google.guava:guava:jar:19.0:compile
[INFO] +- so.sao.analytics:analytics-sdk-common:jar:1.0.1-SNAPSHOT:compile
[INFO] | +- com.esotericsoftware:kryo:jar:3.0.3:compile
[INFO] | | +- com.esotericsoftware:reflectasm:jar:1.10.1:compile
[INFO] | | \- com.esotericsoftware:minlog:jar:1.3.0:compile
[INFO] | \- org.mapdb:mapdb:jar:2.0-beta12:compile
[INFO] \- so.sao.analytics:analytics-sdk-storm-common:jar:1.0.1-SNAPSHOT:compile
我真的不知道为什么失败了。现在只需注释代码。如果您遇到了这个,请告诉我,谢谢。根据您发布的内容,您已经从插件配置中删除了很多内容。在
部分,您需要指定目标
修改pom.xml如下
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>your.Main</mainClass>
</transformer>
</transformers>
</configuration>
</plugin>
</plugins>
</build>
</project>
由于没有显示您的pom.xml
,请查看以下差异
在作为实现类发布的pom.xml
代码片段中
org.apache.maven.plugins.shade.resource.ManifestResourceTransformer
但例外情况是抱怨
org.apache.maven.plugins.shade.resource.AppendingTransformer
我也有同样的问题。原来这是由配置Spring引导带来的。我使用SpringBootStarter家长作为我的家长pom 通过设置
start class
属性并从pom.xml中的shade插件中删除ManifestResourceTransformer
配置,我解决了这个问题
<properties>
<start-class>package.Main</start-class>
</properties>
包.主
我通过在有效的pom中搜索
ManifestResourceTransformer
找到了这个属性是的,在我的父模块pom.xml
文件中有相同的配置。也有参考官方用法。但还是失败了。在我的另一个项目中,这些设置运行良好。“太奇怪了!”埃尔坎1788看看我最新的答案。可能在您实际使用的pom.xml
中存在某种类型的输入错误。谢谢,我的pom.xml
文件中的核心与演示相同,您可以看到我的升级问题。我也觉得和你一样奇怪,为什么它会抛出附加变压器异常。也许在我的项目中还有其他一些错误设置?请
org.apache.maven.plugins.shade.resource.ManifestResourceTransformer
org.apache.maven.plugins.shade.resource.AppendingTransformer
<properties>
<start-class>package.Main</start-class>
</properties>