2016-09-21 94 views
2

我使用maven打包陰影jar文件罐子。我瀏覽了其他的帖子,沒有找到答案。我不使用提供作爲一個元素。行家遮陽簾插件不包括被聲明爲依賴

我包括log4j的核心是在pom.xml的依賴,但是當Maven遮陽簾插件構建它排除了依賴的類?我下載了該jar的V2.5並進行了檢查,包和類都在其中。

我必須排除一些org.slf4j類,但應該不會影響到這一點。

這裏是pom.xml中

... 
     <log4j.version>2.5</log4j.version> 
</properties> 
... 
    <dependencies> 
    <dependency> 
     <groupId>de.ruedigermoeller</groupId> 
     <artifactId>kontraktor</artifactId> 
     <version>${kontraktor.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>de.ruedigermoeller</groupId> 
     <artifactId>kontraktor-http</artifactId> 
     <version>${kontraktor.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
... 
     <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 
... 
      <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> 
         <finalName>${project.artifactId}-${project.version}</finalName> 
         <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>uk.co.company.quokka.CompanyMain</mainClass> 
          </transformer> 
         </transformers> 
         <minimizeJar>true</minimizeJar> 
         <excludes> 
          <exclude>**/storage/*</exclude> 
          <exclude>**/data/*</exclude> 
          <exclude>**/web/*</exclude> 
         </excludes> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

這裏的相關部分被堆棧跟蹤:

ERROR StatusLogger Unable to create class org.apache.logging.log4j.core.impl.Log4jContextFactory specified in jar:file:/quokka-0.1-SNAPSHOT.jar!/META-INF/log4j-provider.properties 
ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console... 
Properties file full path ../company.properties 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at org.xnio.Xnio.<clinit>(Xnio.java:93) 
    at io.undertow.Undertow.start(Undertow.java:97) 
    at org.nustaq.kontraktor.remoting.http.Http4K.getServer(Http4K.java:94) 
    at org.nustaq.kontraktor.remoting.http.builder.BldFourK.build(BldFourK.java:115) 
    at uk.co.company.quokka.CompanyMain.main(CompanyMain.java:64) 
Caused by: java.lang.IllegalArgumentException: Invalid logger interface org.xnio._private.Messages (implementation not found in [email protected]) 
    at org.jboss.logging.Logger$1.run(Logger.java:2254) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2227) 
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2214) 
    at org.xnio._private.Messages.<clinit>(Messages.java:56) 
    ... 5 more 

回答

1

在我拋棄行家遮陽簾插件和所用的端maven-assembly-plugin,它似乎可以工作,並以一個可用的jar結束。