For (local) firefox webdrivers, simply use driver.installExtension as mentioned in the docs.
As for remote firefox webdrivers (or Selenium Grid), use Augmenter as mentioned in this issue.
The following is an example of Augmenter provided in this webpage with MIT license:
driver.setFileDetector(new LocalFileDetector());
WebDriver augmentedDriver = new Augmenter().augment(driver);
String id = ((HasExtensions) augmentedDriver).installExtension(Paths.get("src/test/resources/ninja_saucebot-1.0-an+fx.xpi"));
driver.get("https://www.saucedemo.com");
Assertions.assertTrue(driver.findElements(By.className("bot_column2")).size() > 0);
((HasExtensions) augmentedDriver).uninstallExtension(id);
driver.navigate().refresh();
Assertions.assertEquals(0, driver.findElements(By.className("bot_column2")).size());