maven-shade-plugin

我怕爱的太早我们不能终老 提交于 2019-11-30 07:33:53

最近,用规则引擎(drools)的封装了一个jar包,给别人使用。用的是maven-assembly-plugin打的包,可以把多个jar包里的class 给打成一个jar,感觉还是满好用的,但是打包成功后,发现报空指针错误,

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NullPointerException
    at org.kie.internal.utils.KieHelper.<init>(KieHelper.java:43)
    at com.topnet.ruleengine.RuleCall.geKieSession(RuleCall.java:145)
    at com.topnet.ruleengine.RuleCall.call(RuleCall.java:43)
    at M.main(M.java:17)

感觉少打哪个个东西了,于是把drools的包一个一个copy到项目里,挨个试验,发现drools-compiler-7.24.0.Final.jar是OK的,最终定位是kie.conf除了问题。后来去jar里一个,kie.conf是存在有,对比了一下文件内容,发现内容不对,然后就发现了多个kie.conf,判断是文件覆盖出了问题,知道问题就好办,在网上找了一下,发现maven-shade-plugin是个好东西,可以把多个文件内容合并。然后问题就解决了。

<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>
                <configuration>
                  <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                              <resource>META-INF/kie.conf</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <mainClass>com.topnet.ruleengine.RuleCall</mainClass>
                    </transformer>
                  </transformers>
                </configuration>
              </execution>
            </executions>
          </plugin>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!