Как заставить maven брать ресурсы из /src/test /resources вместо/src/main / resources для зависимого проекта?
я поискал по форуму, чтобы найти ответ на мою проблему, но я не смог найти его. Моя проблема в том, что:
у меня есть два проекта: ProjectA и ProjectB. ProjectB использует ProjectA. В ProjectA у меня есть две папки: / src / main / resources and/src/test / resources. В ProjectB я запускаю: mvn clean install. Я хочу, чтобы на этапе тестирования классы в ProjectB использовали ресурсы из /src/test/resources вместо /src/main/resources.
это то, что я пытался: http://www.waltercedric.com/java-j2ee-mainmenu-53/361-maven-build-system/1349-maven-reusing-test-classes-across-multi-modules-projects.html
это похоже на мою проблему, но после того, как я настроил цель test-jar для ProjectA, ProjectB все еще запускает тесты таким образом, что классы в ProjectA используют свойства из /src/main/resources вместо /src/test/resources.
мой пом.xml в ProjectA выглядит так:
<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>
в ProjectB мой ПФЛ.xml выглядит так:
<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>
есть ли способ Любая помощь будет оценена!
С уважением,
Матеуш Мороз!--3-->
1 ответов
на src/main/resources
упакованы в jar-файл с именем ProjectA.jar
как следующая структура
ProjectA.jar
|`-com
| `-sensano
| `-foo
`-[the resource form src/main/resources]
к сожалению src/test/resources
также упакованы в файл jar с именем ProjectA-tests.jar
как следующая структура также.
ProjectA-tests.jar
|`-com
| `-sensano
| `-foo
`-[the resource form src/test/resources]
если имя ресурса, которое вам требуется, одно и то же имя для обоих из src/main/resources
и src/test/resources
. Могут быть некоторые проблемы с загрузчиком класса. ИМХО, побеждает ближайший.
так как вы положили ProjectA
до ProjectA-tests
, тогда может быть первопричина того, что ProjectB
использовать src/main/resources
С ProjectA
так как это ближайший.
пожалуйста, попробуйте поменять местами, поставив ProjectA-tests
до ProjectA
следующим образом: -
<dependencies>
<dependency>
<groupId>com.sensano</groupId>
<artifactId>ProjectA</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>com.sensano</groupId>
<artifactId>ProjectA</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
ближайший будет ProjectA-tests
и ProjectB
нужно использовать src/test/resources
вместо.
надеюсь, это поможет.