如何从战争中排除依赖,但在测试或开发之前使用它
答案 0 :(得分:4)
正如其他人所说,范围=提供或范围=测试是要走的路。
<scope>provided</scope>
表示该库将存在于目标系统中,不需要部署。 (或者在某些情况下,例如不能部署log4j,否则将导致类加载器问题)<scope>test</scope>
表明只有测试代码需要依赖(因此不需要或在目标系统上提供)以下是相关文件:
Introduction to the Dependency Mechanism
在相关说明中:不同的用例是您在不同服务器上使用不同数据库的情况。您可以使用配置文件来部署正确的驱动程序:
<profiles>
<profile>
<id>testserver</id>
<dependencies>
<dependency>
... (database driver a)
</dependency>
</dependencies>
</profile>
<profile>
<id>productionserver</id>
<dependencies>
<dependency>
... (database driver b)
</dependency>
</dependencies>
</profile>
<profile>
<id>localdevelopment</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
... (database driver c)
</dependency>
</dependencies>
</profile>
</profiles>
这样,如果您只是致电mvn install
,则会部署驱动程序c,而mvn install -Ptestserver
和mvn install -Pproductionserver
将分别包含驱动程序a或b。
答案 1 :(得分:1)
可以在依赖项标记中指定范围。您可以将范围指定为测试,它不会包含在您的战争中,但仅用于测试。
答案 2 :(得分:1)
您使用<scope>provided</scope>
代码执行此操作。
<dependency>
<groupId>org.livetribe</groupId>
<artifactId>livetribe-jsr223</artifactId>
<version>2.0.6</version>
<scope>provided</scope>
</dependency>