我正在尝试使用maven-remote-resources-plugin在多模块maven项目中的模块之间共享许多资源。不幸的是,共享二进制资源在捆绑期间被破坏,可能是通过过滤。
我确信在此阶段发生了损坏,因为从我的本地存储库中提取共享资源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 :(得分:4)
听起来资源在捆绑过程中被破坏了。由于资源项目只是一个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描述了默认情况下未经过滤的二进制文件;上面的配置为列表添加了扩展名。
答案 1 :(得分: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>
答案 2 :(得分:0)
我们为解决这个问题采取的方法如下 注意我误解了user944849的答案,所以我没有测试它,它可能会起作用。
我们使用shared-resources pom中的resources子句直接在本地存储库中创建了jar。我认为这是使用maven-resources-plugin(?)。
然后使用maven-dependency-plugin将其解压缩到临时目录,并在资源消费者pom的resources子句中过滤所需的资源。
共享资源
<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-remote-resources-plugin的所有实例,但它适用于我们并解决了二进制资源损坏的问题。