使用maven-remote-resources-plugin并指定resourcesDirectory

时间:2015-06-05 14:24:30

标签: maven maven-2 maven-3 maven-plugin maven-remote-resources

在使用 maven-remote-resources-plugin 时,我正在尝试覆盖默认资源目录(src / main / resources)。但是,下面的示例中的指定值似乎没有被考虑在内。如果有人能给我一些指示,我将不胜感激。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>my.resource.library</groupId>
    <artifactId>resource-library</artifactId>
    <version>1.0</version>
    <name>ResourceLibrary</name>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-remote-resources-plugin</artifactId>
                <version>1.5</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>bundle</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <resourcesDirectory>${basedir}/common</resourcesDirectory>
                    <includes>
                        <include>**/*</include>
                    </includes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
编辑:我想知道这是否是插件中的错误,因为我在构建的DEBUG输出中看到以下内容,这意味着它试图使用正确的资源目录。调试输出中没有任何其他相关内容。

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-remote-resources-plugin:1.5:bundle' with basic configurator -->
[DEBUG]   (f) includes = [**/*]
[DEBUG]   (f) outputDirectory = C:\jit\workspace\ResourceLibrary\target\classes
[DEBUG]   (f) resourcesDirectory = C:\jit\workspace\ResourceLibrary\common

编辑:我认为这实际上可能是一个错误所以提出了:MRRESOURCES-96

2 个答案:

答案 0 :(得分:2)

为什么需要maven-remote-resources-plugin?

如果您的目标是StringBuilder sb = new StringBuilder(str); if (sb.charAt(1) == 'x') { sb.deleteCharAt(1); } if (sb.charAt(0) == 'x') { sb.deleteCharAt(0); } return sb.toString(); ,那么您可以使用mvn resources:copy-resources,因为它更灵活。示例here

<强>替代

您还可以使用资源插件提供的override the default resources directory目标,并在pom文件的块中指定资源。示例here

修改

关于maven-remote-resources-plugin,请参阅usage页面:

  

这将触发扫描该项目的$ basedir / src / main / resources目录,并创建$ basedir / target / classes / META-INF / maven / remote-resources.xml清单文件。

这意味着此插件将创建resources文件,但这并不意味着它会为您复制资源。

我使用您的插件配置创建了一个空的maven项目,它实际上创建了一个remote-resources.xml文件。此外,它没有复制$ {basedir} / common

下的文件

为此,只需在构建部分中指定资源即可。例如:

remote-resources.xml

答案 1 :(得分:0)

kly是对的,不是为你复制资源(我道歉,我还不能发表评论 - 没有足够的声誉)。

使用“捆绑”目标,您只生成包含所包含资源列表的清单。清单必须与资源本身一起打包在工件中,只有在您还使用copy-resources将它们放入target / classes目录时才会在您的实例中发生。

然后,您必须使用“流程”目标,并在您希望使用资源的任何其他项目中列出您的捆绑包。