14

ich Schatten Plugin und alles bin mit funktioniert gut, außer für überWie man manifest class-path in maven shade plugin setzt?

<transformer 
     implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
     <mainClass>com.generic.App</mainClass> 
     <classPath>. ./config</classPath>       
    </transformer> 

ich

erhalten zu können, für manifestieren Class-Path setzen
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default)    on project SpringThing: Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:2.1:shade for parameter transformer: Cannot find setter, adder nor field in org.apache.maven.plugins.shade.resource.ManifestResourceTransformer for 'classPath' -> [Help 1] 

im doc Blick

http://maven.apache.org/plugins/maven-shade-plugin/apidocs/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.html

Sollte in der Lage sein, jede gültige Manifest-Ressource zu analysieren? Ich habe versucht, clss-Pfad Class-Path ClassPath nichts funktioniert ...

Ich brauche den Klassenpfad, um den Speicherort der externen App-Eigenschaft Dateien festzulegen.

I Schatten Plugin statt Montage bin mit wegen eines wohlbekanntes Problem:

http://blog.idm.fr/2009/09/maven-assembly-plugin-and-spring-namespace-handlers.html

Ich kann dies ziemlich leicht in der Montage tun durch die Art und Weise: (und es funktioniert)

<manifestEntries> 
    <Class-Path>. ./config</Class-Path> 
</manifestEntries> 

Ich kann das oneJar-Plugin nicht über Maven verwenden, da Sie auch keine Manifest-Einträge festlegen können. (Ich glaube nicht?)

Irgendwelche Ideen?

Antwort

23

die Sie interessieren, und es sollte mit Maven-Schatten-Plugin-Version 2.1 arbeiten:

<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
<manifestEntries> 
    <Main-Class>your.main.class</Main-Class> 
    <Class-Path>your/class/path/here</Class-Path> 
</manifestEntries> 
</transformer> 

Mark der Unterschied in der Tag-<Class-Path> wie Sie hatte <classPath>

+0

zu dieser Antwort hinzuzufügen, ich habe vergessen, auch zu setzen Klassenpfad in MainfestEntries, was ein dummer Fehler war. Beabsichtigte mein eigenes Q eher zu antworten, aber vergaß es! Danke für die Erinnerung. – sloven

+0

@JamesRobinson, ist es auch die richtige Antwort? : P – 0xbe5077ed

+0

Versucht dies in Version 2.3, funktioniert nicht. :/ – Wrench