web-dev-qa-db-ja.com

Mavenシェードプラグインでマニフェストクラスパスを設定するにはどうすればよいですか?

私はシェードプラグインを使用していますが、マニフェストのクラスパスを設定できることを除いて、すべて正常に機能します

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

私は得る

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

ドキュメントを見て

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

有効なマニフェストリソースを解析できる必要がありますか? clss-path Class-PathClassPathを試しましたが何も機能しません...

外部アプリのプロパティファイルの場所を設定するためのクラスパスが必要です。

よく知られている問題のため、Assemblyの代わりにshadeプラグインを使用しています。

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

ちなみに、アセンブリでこれを行うのは非常に簡単です:(そしてそれは機能します)

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

マニフェストエントリも設定できないため、Maven経由でoneJarプラグインを使用することはできません。 (私は思いませんか?)

何か案は?

17

これを試してみると、maven-shade-pluginバージョン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>

タグの違いをマークします<Class-Path>あなたが持っていたように<classPath>

30