使用idea自己的打包方式一直是有问题的,不但每次都需要手动添加主类,手动添加后还是不对。
所以就使用了maven打包方式,maven打包使用的是“maven-shade-plugin”这个插件,配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>这里填写主类</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
这种打包方式会自动添加主类了,好很多,可是还是又问你,会爆下面的错误:
Caused by: java.lang.IllegalArgumentException: An SPI class of type org.apache.lucene.codecs.PostingsFormat with name ‘Lucene50’ does not exist. You need to add the corresponding JAR file supporting this SPI to your classpath. The current classpath supports the following names: [Lucene40, Lucene41]
这依然是打包方式出错了,修改一下配置文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>Main</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
这下就完全好了,没问题了。
看来maven是极其的强大啊,以前一直只是使用到了它的添加依赖功能,这次后觉得还是得好好学习一下