14

Sto usando plug-ombra e tutto funziona bene tranne che per essere in grado di impostare Class-Path per manifesta tramiteCome impostare il percorso di classe manifest nel plugin maven shade?

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

ottengo

[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] 

Guardando il doc

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

Dovrebbe essere in grado di analizzare qualsiasi risorsa manifest valida? Ho provato il percorso clss Class-Path ClassPath non funziona nulla ...

Ho bisogno del classpath per impostare la posizione dei file delle proprietà delle app esterne.

sto usando plug-in ombra invece di assemblaggio a causa di un problema ben noto:

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

posso farlo in montaggio abbastanza facilmente dal modo in cui: (e funziona)

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

Non riesco a utilizzare il plugin oneJar tramite Maven perché non è possibile impostare le voci manifest. (Non credo?)

Qualche idea?

risposta

23

Prova questo e dovrebbe funzionare con Maven-ombra-plugin versione 2.1:

<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 la differenza di tag <Class-Path> come si doveva <classPath>

+0

Per aggiungere a questa risposta, ho anche dimenticato di mettere Class-Path in mainfestEntries, che è stato uno stupido errore. Volevo rispondere al mio q prima, ma ho dimenticato! Grazie per il promemoria. – sloven

+0

@JamesRobinson, è anche la risposta giusta? : P – 0xbe5077ed

+0

Provato questo nella versione 2.3, non funziona. :/ – Wrench