Одним из способов может быть установка зависимостей на сервере. Но если вам нужны разные версии, это немного запутанно и не поможет в долгосрочной перспективе. Если вам нужны разные версии для разных сборок, это сложно и очень подвержено ошибкам.
Более чистый способ: я бы предложил систему контейнеров, такую как докер. Затем вы можете инкапсулировать зависимости сборки для каждого проекта и даже для каждой ветви. Построение контейнера - не большая часть накладных расходов. Докер и Дженкинс слаженно работают вместе. Единственный недостаток imho, докер должен быть установлен на Дженкинс. Но этого можно избежать, если использовать vm в качестве узла jenkins, который обрабатывает все док-конвейеры.