首页 文章

如何在maven shade插件中设置清单类路径?

提问于
浏览
16

我正在使用shade插件,除了能够为manifest via设置Class-Path之外,一切正常

<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-Path ClassPath什么都行不通......

我需要classpath来设置外部app属性文件的位置 .

由于一个众所周知的问题,我使用的是阴影插件而不是汇编:

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

顺便说一句,我可以很容易地在装配中做到这一点:(并且它有效)

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

我不能通过maven使用oneJar插件,因为你也无法设置清单条目 . (我不认为?)

有任何想法吗?

1 回答

  • 26

    试试这个,它应该与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>

相关问题