Как и предполагали другие, путь = предоставленный или объем = тест - это путь.
<scope>provided</scope>
подразумевает, что библиотека будет присутствовать в целевой системе и не нуждается в развертывании. (Или в некоторых случаях, например, log4j не должен быть развернут, потому что в противном случае возникнут проблемы с загрузчиком классов)
<scope>test</scope>
предполагает, что зависимость необходима только для тестового кода (и, следовательно, не будет необходима или предоставлена в целевой системе)
Вот соответствующая документация:
Введение в механизм зависимостей
В примечании по теме: Другой вариант использования - это тот случай, когда вы используете разные базы данных на разных серверах. Вы можете использовать профили для развертывания правильных драйверов:
<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 соответственно.