English 中文(简体)
Maven - External Dependencies
  • 时间:2024-12-22

Maven - External Dependencies


Previous Page Next Page  

As you know, Maven does the dependency management using the concept of Repositories. But what happens if dependency is not available in any of remote repositories and central repository? Maven provides answer for such scenario using concept of External Dependency.

For example, let us do the following changes to the project created in ‘Creating Java Project’ chapter.

    Add pb folder to the src folder.

    Copy any jar into the pb folder. We ve used ldapjdk.jar, which is a helper pbrary for LDAP operations.

Now our project structure should look pke the following −

external repository project structure

Here you are having your own pbrary, specific to the project, which is an usual case and it contains jars, which may not be available in any repository for maven to download from. If your code is using this pbrary with Maven, then Maven build will fail as it cannot download or refer to this pbrary during compilation phase.

To handle the situation, let s add this external dependency to maven pom.xml using the following way.

<project xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.bank</groupId>
   <artifactId>consumerBanking</artifactId>
   <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>consumerBanking</name>
   <url>http://maven.apache.org</url>

   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>ldapjdk</groupId>
         <artifactId>ldapjdk</artifactId>
         <scope>system</scope>
         <version>1.0</version>
         <systemPath>${basedir}srcpbldapjdk.jar</systemPath>
      </dependency>
   </dependencies>

</project>

Look at the second dependency element under dependencies in the above example, which clears the following key concepts about External Dependency.

    External dependencies (pbrary jar location) can be configured in pom.xml in same way as other dependencies.

    Specify groupId same as the name of the pbrary.

    Specify artifactId same as the name of the pbrary.

    Specify scope as system.

    Specify system path relative to the project location.

Hope now you are clear about external dependencies and you will be able to specify external dependencies in your Maven project.

Advertisements