2013-07-15 3 views
9

Ich habe einen Abschnitt in pom.xmlWie kann ich * .DSA und * .SF-Dateien aus schattierten Jar auszuschließen?

<filters> 
    <filter> 
     <artifact>*:*</artifact> 
     <excludes> 
      <exclude>META-INF/*.SF</exclude> 
      <exclude>META-INF/*.DSA</exclude> 
     </excludes> 
    </filter> 
</filters> 

I * .SF und * .DSA Dateien aus final jar ausschließen möchten. Aber ich bekomme die folgende Meldung:

[INFO] No artifact matching filter *:* 

und Dateien nicht ausgeschlossen werden. Kann jemand es überwinden?

+0

Verwandte: [Maven Schatten jar throw Ausnahme] (http://stackoverflow.com/q/8302022/ 320399) – blong

Antwort

5

Ich hatte das gleiche Problem. Es wurde behoben, indem mein Artefaktselektor spezifischer gemacht wurde, z.

<artifact>bouncycastle:*</artifact> 

Der gesamte Block wie folgt aussieht:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      <configuration> 
       <transformers> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
         <mainClass>com.mycompany.MainClass</mainClass> 
        </transformer> 
       </transformers> 
       <filters> 
        <filter> 
         <artifact>bouncycastle:*</artifact> 
         <excludes> 
          <exclude>META-INF/*.SF</exclude> 
          <exclude>META-INF/*.DSA</exclude> 
          <exclude>META-INF/*.RSA</exclude> 
         </excludes> 
        </filter> 
       </filters> 
       <shadedArtifactAttached>true</shadedArtifactAttached> 
       <shadedClassifierName>standalone</shadedClassifierName> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
+0

Versucht, dass (ohne ManifestResourceTransformer), funktionierte für mich nicht, die BCKEY. * Dateien sind immer noch da. Ich habe auch Artefakt '*: *: *: *' ausprobiert. Es ist eine alte Antwort, hat sich die Maven-Syntax geändert? –

13

Eigentlich kann man ohne globale Filterung tun, um Gruppen-ID angeben, müssen Sie nur die korrekte Wildcard-Syntax verwenden. Wenn Sie alle * .RSA Dateien von Ihrem Glas auszuschließen, zum Beispiel, geben Sie die artifactId als *:*:*:*

<filters> 
    <filter> 
     <artifact>*:*:*:*</artifact> 
     <excludes> 
      <exclude>*.RSA</exclude> 
     </excludes> 
    </filter> 
</filters> 
+0

Es schließt "META-INF/ECLIPSE.SF" und "META-INF/ECLIPSE.RSA" nicht aus. Was noch interessanter ist, ist, dass ich überhaupt keine Eclipse benutze, sondern Intellij. – Searene

+0

Dies erlaubt mir, eine lästige license.txt-Datei aus dem Glas zu entfernen, indem Sie einfach die Zeile LICENSE.txt –