2016-01-12 20 views
5

Sto utilizzando il plug-in Maven per generare un jar consolidato per il mio progetto. Il vaso viene generato come previsto e quando cerco di utilizzare il vaso ed eseguirlo, ho un java.lang.SecurityExceptionIl plugin ombreggiatura Maven non esclude i file di firma manifest

: file di firma non valido digerire per manifesto errore principali attributi.

Ho cercato su google il messaggio di errore sopra riportato e molte persone hanno suggerito di escludere le firme manifest dalla directory META-INF. Quindi ho incluso il passaggio per escludere questi file dalla directory [vedo due file con il nome JARSIGN_.RSA e JARSIGN_.SF], ma per qualche strana ragione, il plugin schermo maven non è in grado di escludere questi file dalla directory META-INF. Qualcuno potrebbe spiegarmi cosa potrei fare di sbagliato? Il mio pom.xml è al di sotto e il comando che sto usando per generare il vaso è:

mvn clean package shade:shade 

pom.xml

<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.abc.xyz</groupId> 
     <artifactId>myjar</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     <packaging>jar</packaging> 
     <url>http://maven.apache.org</url> 

     <properties> 
      <!-- A few custom properties --> 
     </properties> 


     <dependencies> 
      <dependency> 
       <groupId>com.google.code.gson</groupId> 
       <artifactId>gson</artifactId> 
       <version>2.3.1</version> 
      </dependency> 
      <dependency> 
       <groupId>com.google.guava</groupId> 
       <artifactId>guava</artifactId> 
       <version>18.0</version> 
      </dependency> 
     <!-- Other The dependencies are here --> 
     </dependencies> 

     <repositories> 
      <!-- Repository Information --> 
     </repositories> 
     <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-compiler-plugin</artifactId> 
         <version>2.3.2</version> 
         <configuration> 
          <source>1.8</source> 
          <target>1.8</target> 
          <encoding>UTF-8</encoding> 
         </configuration> 
        </plugin> 
        <!-- Maven Shade Plugin --> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-shade-plugin</artifactId> 
         <version>2.4.2</version> 
         <executions> 
          <!-- Run shade goal on package phase --> 
          <execution> 
           <phase>package</phase> 
           <goals> 
            <goal>shade</goal> 
           </goals> 
           <configuration> 
            <filters> 
             <filter> 
              <artifact>*:*</artifact> 
<!-- The below statement is not executed by shade plugin --> 
              <excludes> 
               <exclude>META-INF/*.SF</exclude> 
               <exclude>META-INF/*.DSA</exclude> 
               <exclude>META-INF/*.RSA</exclude> 
              </excludes> 
             </filter> 
            </filters>       
            <minimizeJar>true</minimizeJar> 
            <artifactSet> 
             <includes> 
              <include>com.google.guava:guava</include> 
              <include>com.google.code.gson:gson</include> 
             </includes> 
            </artifactSet> 
            <transformers> 
             <!-- add Main-Class to manifest file --> 
             <transformer 
              implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
              <manifestEntries> 
               <Main-Class>com.abc.xyz.HelloWorld</Main-Class> 
              </manifestEntries> 
             </transformer> 
            </transformers> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
     </build> 
    </project> 
+0

Questa configurazione sembra corretta, io uso lo stesso con successo: http://pastebin.com/2ZQjehMi Attiva l'output di debug su '-X' per verificare che il plugin sia eseguito e che queste risorse non vengano aggiunte in seguito –

risposta

5

Forse la sintassi di configurazione del plugin è cambiato, ma questo ha funzionato per me in passato con la versione 1.5 del plug-in shader:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>1.5</version> 
    <configuration> 
     <transformers> 
      <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> 
       <resource>META-INF/JARSIGN_.SF</resource> 
      </transformer> 
     </transformers> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Non ho provato a utilizzare i caratteri jolly. Ma guardando il documentation seguente dovrebbe escludere tutti i file .SF:

<resource>.SF</resource> 

Vai a questa thread per un altro esempio.