# Maven Maven downloads dependency of [the latest version](https://cwiki.apache.org/confluence/display/MAVENOLD/Dependency+Mediation+and+Conflict+Resolution#DependencyMediationandConflictResolution-DependencyVersionRanges) matching the declared range by default, in other words whenever new versions of Selenium 4 libraries are published they are pulled transitively as Appium Java Client dependencies at the first project (re)build automatically. In order to pin Selenium dependencies they should be declared in `pom.xml` in the following way: ```xml io.appium java-client X.Y.Z org.seleniumhq.selenium selenium-api org.seleniumhq.selenium selenium-remote-driver org.seleniumhq.selenium selenium-support org.seleniumhq.selenium selenium-api A.B.C org.seleniumhq.selenium selenium-remote-driver A.B.C org.seleniumhq.selenium selenium-support A.B.C ``` # Gradle Gradle uses [Module Metadata](https://docs.gradle.org/current/userguide/publishing_gradle_module_metadata.html) to perform improved dependency resolution whenever it is available. Gradle Module Metadata for Appium Java Client is published automatically with every release and is available on Maven Central. Appium Java Client declares [preferred](https://docs.gradle.org/current/userguide/rich_versions.html#rich-version-constraints) Selenium dependencies version which is equal to the lowest boundary in the version range, i.e. the lowest compatible Selenium dependencies are pulled by Gradle by default. It's strictly recommended to do not use versions lower than the range boundary, because unresolvable compilation and runtime errors may occur. In order to use newer Selenium dependencies they should be explicitly added to Gradle build script (`build.gradle`): ```gradle dependencies { implementation('io.appium:java-client:X.Y.Z') implementation('org.seleniumhq.selenium:selenium-api:A.B.C') implementation('org.seleniumhq.selenium:selenium-remote-driver:A.B.C') implementation('org.seleniumhq.selenium:selenium-support:A.B.C') } ```