Khi mà bạn muốn thêm 1 dependency mà nó không có trên repository của Maven. Và bạn có file thư viện đó, ví dụ Oracle Driver ojdbc6.jar như vậy bạn cần phải cài đặt thư viện này theo đường dẫn tương đối một cách tự động, để những thành viên trong dự án không cần phải cài đặt lại nữa !

Cài đặt tương đối theo đường dẫn file

Giả sử file thư viện mà bạn có ojdbc6.jar được đặt tương đối với dự án có đường dẫn như sau:

${project}/src/lib/

Vậy trong file pom.xml cấu hình như sau:

<dependency>
         <groupid>ojdbc</groupid>
         <artifactid>ojdbc6</artifactid>
         <scope>system</scope>
         <version>6</version>
         <systempath>${basedir}/src/lib/ojdbc6.jar</systempath>
 </dependency>

Chú ý là scope của dependency đặt là system. Ngoài cách khai báo tương đối theo systemPath còn có một cách khác nữa là cài đặt tương đối phụ thuộc vào local repository. Cách này có vẻ hiệu quả hơn khi Project có nhiều project con 😀

maven-repositories-local

Cài đặt tương đối theo in-project repository

Bằng cách này bạn phải khai báo một repository tương đối đến thư mục chứa file thư viện mà được tổ chức (thư mục, tên file) theo kiến trúc chuẩn.

your-project/
  src/
    lib/
      oracle/
        jdbc/
          ojdbc6/
            11.2.0.4/
              ojdbc6-11.2.0.4.jar

Và trong file pom.xml được khai báo như sau:

<project ...>

    <repositories>
        <repository>
            <id>lib</id>
            <name>lib</name>
            <releases>
                <enabled>true</enabled>
                <checksumPolicy>ignore</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <url>file://${project.basedir}/src/lib</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>oracle.jdbc</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.4</version>
        </dependency>
        ...
    <dependencies>
    ...
</project>

Trường hợp bị lỗi, không build được dự án do không tìm được đường dẫn tới local repository hãy cập nhật lại dòng 14 bằng cách thay thế file://${project.basedir}/src/lib thành file://${project.basedir}\src\lib

Cài đặt tương đối theo file bằng Maven Plugin

Ý tưởng là lưu file ojdbc6-11.2.0.4.jar vào .m2 repo (nơi maven download và lưu trữ dependencies) lúc build dự án. Để làm việc này hãy thêm plugin maven-install-plugin như sau:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <inherited>false</inherited>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>oracle.jdbc</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0.4</version>
                <packaging>jar</packaging>
                <file>${basedir}/src/lib/ojdbc6-11.2.0.4.jar</file>
            </configuration>
        </execution>
    </executions>
</plugin>

Trong các dự án hiện tại, tôi cũng lựa chọn cách này 🙂

Tham khảo:

About The Author