依赖注入和测试
Dependency injection and Tests
我有一个包含一些测试的项目,它所做的只是创建一个 test-jar
以供其他项目 运行 使用。它依赖于另一个神器,我们称之为神器 X
然后还有多个其他项目运行test-jar
,使用maven-surefire-plugin
我有多个工件 X
的实现,我想做的是能够 运行 使用我想要的实现来进行这些测试,而不是 X
例如:
在项目 A
中,我想 运行 使用实现的测试 A
在项目 B
中,我想 运行 使用实现的测试 B
这似乎是不可能的,因为一旦 test-jar
生成,它就会在其中硬编码工件 X
所以我愿意接受任何其他解决方案
编辑:
额外信息:
生成测试的项目的 pom 文件:
生成test-jar
的部分
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
工件 X
依赖项:
<dependency>
<groupId>com.conztanz</groupId>
<artifactId>X</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
其中一个项目的 pom 文件 运行ning 测试(项目 A
):
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<dependenciesToScan>
<dependency>testJar</dependency>
</dependenciesToScan>
</configuration>
</plugin>
</plugins>
</build>
理想情况下,我想要的是做一些事情,告诉项目 A
到 Override
工件 X
和它自己的实现
我希望这现在更有意义
我认为您正在寻找名为 provided
.
的 scope
依赖关系如下所示:
<dependency>
<groupId>com.conztanz</groupId>
<artifactId>X</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
这告诉 Maven:"Hey, I need this to compile, but don't include it in the target output, because a container (or something) will provide the jar itself."
我有一个包含一些测试的项目,它所做的只是创建一个 test-jar
以供其他项目 运行 使用。它依赖于另一个神器,我们称之为神器 X
然后还有多个其他项目运行test-jar
,使用maven-surefire-plugin
我有多个工件 X
的实现,我想做的是能够 运行 使用我想要的实现来进行这些测试,而不是 X
例如:
在项目 A
中,我想 运行 使用实现的测试 A
在项目 B
中,我想 运行 使用实现的测试 B
这似乎是不可能的,因为一旦 test-jar
生成,它就会在其中硬编码工件 X
所以我愿意接受任何其他解决方案
编辑:
额外信息:
生成测试的项目的 pom 文件:
生成test-jar
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
工件 X
依赖项:
<dependency>
<groupId>com.conztanz</groupId>
<artifactId>X</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
其中一个项目的 pom 文件 运行ning 测试(项目 A
):
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<dependenciesToScan>
<dependency>testJar</dependency>
</dependenciesToScan>
</configuration>
</plugin>
</plugins>
</build>
理想情况下,我想要的是做一些事情,告诉项目 A
到 Override
工件 X
和它自己的实现
我希望这现在更有意义
我认为您正在寻找名为 provided
.
依赖关系如下所示:
<dependency>
<groupId>com.conztanz</groupId>
<artifactId>X</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
这告诉 Maven:"Hey, I need this to compile, but don't include it in the target output, because a container (or something) will provide the jar itself."