2011-12-19 37 views
0

好吧,我遇到了我需要创建一个uber jar的典型问题,但是我的项目依赖关系有多个spring.handlers和spring.schemas文件。我搜索了一下,发现我的问题要求我使用maven-shade插件,以及它的AppendingTransformer。问题是,当我添加配置并运行目标时,它不合并文件;更重要的是,我可以为appender或资源文件放入一个伪造类路径,并且它不会发出抱怨,这使我相信它甚至不会尝试执行变换器。maven-shade插件的AppenderTransformer的使用

execute- MVN编译包遮阳:遮阳

<build> 
    <finalName>mongo-dictionary</finalName> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.7.2</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
          <transformers> 
           <transformer 
            implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
           </transformer> 
           <transformer 
            implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
            <resource>META-INF/spring.schemas</resource> 
           </transformer> 
          </transformers> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

回答

-1

哪里是这个插件配置,可以确保它在正确的地方 - 构建 - >插件要为其创建超级项目的元素罐。我有相同的配置适合我。

此外,您不需要单独执行阴影:阴影。运行mvn包会为你做到这一点。

+0

所以这里是我的pom.xml的整个构建部分 – 2011-12-20 06:05:44

+0

我已经添加了整个构建部分。请检查并让我知道是否有任何问题 – 2011-12-20 06:11:31

+0

我有我的插件配置为pluginManagement元素的子项,一旦我摆脱了pluginManagement tage一切工作如广告。感谢您指点我正确的方向 – 2011-12-20 06:21:28

1

我把我的插件配置为pluginManagement元素的子元素,一旦我摆脱了pluginManagement标签,所有的东西都像广告一样工作。

+0

这应该是公认的答案 - 请添加一个工作示例,显示发生了什么变化(如果可能)。 – studro 2018-02-07 05:51:22