如何使maven从/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如下所示:如何使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 这就是我所尝试的: 这与我的问题类似,但是
<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中的作用是什么?