maven classpath manifest maven-assembly-plugin maven-shade-plugin

¿Cómo configurar la ruta de clase de manifiesto en el plugin de maven shade?



classpath manifest (1)

Estoy usando el complemento de sombra y todo funciona bien, excepto que puedo configurar Class-Path para el manifiesto a través de

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

yo obtengo

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

Mirando al doc

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

¿Debería poder analizar cualquier recurso manifiesto válido? Intenté clss-path Class-Path ClassPath nada funciona ...

Necesito el classpath para establecer la ubicación de los archivos de propiedades de aplicaciones externas.

Estoy usando el complemento de sombra en lugar del ensamblaje debido a un problema bien conocido:

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

Puedo hacer esto en ensamblaje con bastante facilidad por cierto: (y funciona)

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

No puedo usar el complemento oneJar a través de maven porque tampoco se pueden establecer entradas de manifiesto. (No creo?)

¿Algunas ideas?


Prueba esto y debería funcionar con la versión 2.1 de maven-shade-plugin:

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

Marque la diferencia en la etiqueta <Class-Path> como tenía <classPath>