Maven Tutorial
Maven in IDE
In this tutorial, you will learn how to use Maven dependency exclusions and optional dependencies to better manage and control the dependencies in your project. Both features help in reducing the number of unnecessary or unused dependencies, resulting in a cleaner and lighter project.
Prerequisites
mvn -v
in your command prompt or terminal, and the version information should be displayed.1. Understanding dependency exclusions
Dependency exclusions allow you to exclude specific transitive dependencies of a dependency you're using in your project. In some cases, these transitive dependencies may be unnecessary, conflict with other dependencies, or cause security vulnerabilities. By using dependency exclusions, you can prevent such dependencies from being included in your project.
2. Adding dependency exclusions
To exclude a transitive dependency, add an <exclusions>
element inside the <dependency>
element in your pom.xml
file:
<dependency> <groupId>com.example</groupId> <artifactId>example-library</artifactId> <version>1.0.0</version> <exclusions> <exclusion> <groupId>com.example</groupId> <artifactId>unnecessary-library</artifactId> </exclusion> </exclusions> </dependency>
In this example, the unnecessary-library
is a transitive dependency of example-library
and is excluded from the project. You can add multiple <exclusion>
elements to exclude multiple transitive dependencies.
3. Understanding optional dependencies
Optional dependencies are dependencies that are not required for a library to function correctly but provide additional features if they are present. When a dependency is marked as optional, it won't be included as a transitive dependency when another project depends on your project. This feature can help reduce the number of dependencies for projects using your library, while still providing the option to use additional features if required.
4. Marking dependencies as optional
To mark a dependency as optional, add the <optional>
element inside the <dependency>
element in your pom.xml
file and set its value to true
:
<dependency> <groupId>com.example</groupId> <artifactId>optional-library</artifactId> <version>1.0.0</version> <optional>true</optional> </dependency>
In this example, the optional-library
dependency is marked as optional. When another project depends on your project, the optional-library
dependency won't be included as a transitive dependency. However, if a project explicitly adds the optional-library
dependency to its own pom.xml
, it can still use the additional features provided by it.
In conclusion, this tutorial covered how to use Maven dependency exclusions and optional dependencies to better manage your project's dependencies. Using these features can help you reduce the number of unnecessary or unused dependencies, resulting in a cleaner and lighter project.
How to exclude dependencies in Maven POM:
<dependencies> <dependency> <groupId>com.example</groupId> <artifactId>example-artifact</artifactId> <version>1.0.0</version> <exclusions> <exclusion> <groupId>unwanted.group</groupId> <artifactId>unwanted-artifact</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
Defining optional dependencies in Maven projects:
<dependencies> <dependency> <groupId>com.example</groupId> <artifactId>optional-artifact</artifactId> <version>1.0.0</version> <optional>true</optional> </dependency> </dependencies>
Excluding dependencies from specific scopes in Maven:
<dependencies> <dependency> <groupId>com.example</groupId> <artifactId>test-artifact</artifactId> <version>1.0.0</version> <scope>test</scope> </dependency> </dependencies>