如何使maven从/src/test/resources而不是/src/main/resources获取依赖项目的资源?

如何使maven从/src/test/resources而不是/src/main/resources获取依赖项目的资源?,maven,jar,resources,dependencies,Maven,Jar,Resources,Dependencies,我在论坛上搜索了我的问题的答案,但是我找不到。我的问题是: 我有两个项目:ProjectA和ProjectB。ProjectB使用ProjectA。在ProjectA中,我有两个文件夹: /src/main/resources和/src/test/resources。 在ProjectB中,我运行:mvn清洁安装。我希望在测试阶段,ProjectB中的类使用来自/src/test/resources的资源,而不是/src/main/resources 这就是我所尝试的: 这与我的问题类似,但是

我在论坛上搜索了我的问题的答案,但是我找不到。我的问题是:

我有两个项目:ProjectA和ProjectB。ProjectB使用ProjectA。在ProjectA中,我有两个文件夹: /src/main/resources和/src/test/resources。 在ProjectB中,我运行:mvn清洁安装。我希望在测试阶段,ProjectB中的类使用来自/src/test/resources的资源,而不是/src/main/resources

这就是我所尝试的:

这与我的问题类似,但是在我为ProjectA配置了测试jar目标之后,ProjectB仍然以这样的方式运行测试,ProjectA中的类使用/src/main/resources而不是/src/test/resources中的属性

ProjectA中的My pom.xml如下所示:

<project ...>
    <parent>
        ...
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>ProjectA</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        ...
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
<project ...>
    <parent>
        ...
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ProjectB</artifactId>
    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.sensano</groupId>
            <artifactId>ProjectA</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>ProjectA</groupId>
            <artifactId>ProjectA</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>test</scope>
            <type>test-jar</type>
        </dependency>
    </dependencies>

</project>

...
4.0.0
项目A
罐子
...
src/main/resources
真的
src/测试/资源
真的
org.apache.maven.plugins
maven jar插件
试验罐
在ProjectB中,my pom.xml如下所示:

<project ...>
    <parent>
        ...
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>ProjectA</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        ...
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
<project ...>
    <parent>
        ...
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ProjectB</artifactId>
    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.sensano</groupId>
            <artifactId>ProjectA</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>ProjectA</groupId>
            <artifactId>ProjectA</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>test</scope>
            <type>test-jar</type>
        </dependency>
    </dependencies>

</project>

...
4.0.0
项目B
罐子
maven故障保护插件
2.6
集成测试
验证
com.sensano
项目A
0.0.1-快照
项目A
项目A
0.0.1-快照
测试
试验罐
有办法吗 任何帮助都将不胜感激

真诚地,

Mateusz Moroz

src/main/resources
打包到名为
ProjectA.jar的jar文件中,其结构如下

ProjectA.jar
|`-com
|  `-sensano
|    `-foo
`-[the resource form src/main/resources]
遗憾的是,
src/test/resources
也按照以下结构打包到名为
ProjectA tests.jar的jar文件中

ProjectA-tests.jar
|`-com
|  `-sensano
|    `-foo
`-[the resource form src/test/resources]
如果您需要的资源名称与
src/main/resources
src/test/resources
中的资源名称相同。可能有一些类装入器问题。伊姆霍,最近的赢了

由于您将
ProjectA
放在
ProjectA测试之前,因此可能是
ProjectB
将使用
src/main/resources
ProjectA
的根本原因,因为它是最近的

请尝试将
ProjectA测试
放在
ProjectA
之前进行交换,如下所示:-


com.sensano
项目A
0.0.1-快照
测试
试验罐
com.sensano
项目A
0.0.1-快照
最近的将是
ProjectA测试
,而
ProjectB
应使用
src/test/resources


我希望这会有所帮助。

过滤标签在pom中的作用是什么?