2012-10-02 26 views
0

我正尝试使用maven-remote-resources-plugin在多模块maven项目中跨模块共享大量资源。不幸的是共享的二进制资源在捆绑过程中被破坏,大概是通过过滤。为maven-remote-resources-plugin禁用资源过滤

我相信在这个阶段腐败正在发生,因为从我的本地资源库提取共享资源jar包含破损的二进制文件。

是否有任何关闭maven-remote-resources-plugin的过滤?

目前的POM在我的共享资源模块看起来像

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-remote-resources-plugin</artifactId> 
     <executions> 
     <execution> 
      <goals> 
      <goal>bundle</goal> 
      </goals> 
     </execution> 
     </executions> 
     <configuration> 
     <includes> 
      <include>**/*</include> 
     </includes> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

<dependencies> 
    <dependency> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-remote-resources-plugin</artifactId> 
    <version>1.3</version> 
    </dependency> 
</dependencies> 
+0

你的意思是'maven-remote-resources-plugin'?从您的pom.xml发布相关片段可能有助于吸引回答。 –

+0

谢谢@DuncanJones,这是正确的。我修复了错字,并添加了pom的相关部分 – TaninDirect

回答

3

这听起来像资源捆绑过程中被损坏。由于资源项目只是一个jar,因此它会执行resources插件作为默认生命周期的一部分。尝试将其添加到资源项目的POM中。

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
     <id>default-resources</id> 
     <configuration> 
      <nonFilteredFileExtensions> 
      <nonFilteredFileExtension>exe</nonFilteredFileExtension> 
      <nonFilteredFileExtension>dontFilterMeEither</nonFilteredFileExtension> 
      </nonFilteredFileExtensions> 
      [...] 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

docs描述了二进制文件都保留在默认情况下未过滤;上面的配置文件将扩展添加到列表中。

+0

这是一个我正在使用的插件(错误更正问题)的不同插件,所以您可以请在上面的配置中填写。 – TaninDirect

+1

user944849表示使用两个插件,因为maven-resources-plugin默认绑定到生命周期。所以可能是因为maven-resources-plugin也在破坏你的文件,所以你应该从两者中“保护”你的文件,并按原样添加上面的配置。 –

+0

谢谢@SamuelEUSTACHI,正是如此。 :-) – user944849

0

做了尝试:

<plugin> 
     <artifactId>maven-remote-resources-plugin</artifactId> 
     <version>1.3</version> 
     <executions> 
      <execution> 
      <id>process-remote-resources</id> 
      <goals> 
       <goal>process</goal> 
      </goals> 
      <configuration> 
       <useDefaultFilterDelimiters>false</useDefaultFilterDelimiters> 
       [...] 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
+0

我试过这个,不幸的是,二进制文件在捆绑期间仍然发生崩溃 – TaninDirect

0

我们采取的解决方法如下。
注意我误解了user944849的答案,所以我没有测试它,它可能工作。

我们直接使用shared-resources pom中的resources子句在本地存储库中创建了jar。我认为这是使用maven-resources-plugin(?)。

然后使用maven-dependency-plugin将其解压到一个临时目录,并在资源消费者pom的资源子句中过滤所需的资源。

共享资源

<build> 
    <resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>false</filtering> 
     <includes> 
     <include>**/*</include> 
     </includes> 
    </resource> 
    </resources> 
</build> 

资源消费

<build> 
    <resources> 
    <resource> 
     <directory>${project.build.directory}/shared-resources</directory> 
     <includes> 
     <include>theOnlyOneIWant.properties</include> 
     </includes> 
    </resource> 
    </resources> 
    [...] 
    <plugins> 
    <plugin> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.5</version> 
     <executions> 
     <execution> 
      <id>shared-resources</id> 
      <goals> 
      <goal>unpack-dependencies</goal> 
      </goal> 
      <phase>generate-resources</phase> 
      <configuration> 
      <includeGroupIds>myProjectGroup</includeGroupIds> 
      <includeArtifactIds>myProjectSharedResources</includeArtifactIds> 
      <outputDirectory>$project.build.directory}/shared-resources</outputDirectory> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

这可能不适合,其中可以使用Maven的远程资源 - 插件所有情况下工作,但它为我们工作并解决了二进制资源腐败的问题。