gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:51:05 31 4
gpt4 key购买 nike

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

我有两个项目:ProjectA 和 ProjectB。项目B 使用项目A。在 ProjectA 中,我有两个文件夹:
/src/main/resources 和/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

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

我在 ProjectA 中的 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>

在 ProjectB 中,我的 pom.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>

有没有方法
任何帮助,将不胜感激!

真挚地,
马特乌斯·莫罗兹

最佳答案

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-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反而。

我希望这可能会有所帮助。

关于maven - 如何让 maven 从/src/test/resources 而不是/src/main/resources 获取依赖项目的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591858/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com