Tập tin settings.xml là tập tin cấu hình của Apache Maven, định nghĩa cách mà Apache Maven sẽ thực thi để quản lý các dependencies khi chúng ta sử dụng các dependencies này trong các Maven project. Thay vì chúng ta phải định nghĩa các thông tin cấu hình này trong tập tin pom.xml cho mỗi Maven project, chúng ta sẽ sử dụng tập tin settings.xml để làm điều này và sau đó các Maven project chỉ có việc sử dụng lại các thông tin cấu hình này mà thôi. Mình sẽ nói về tập tin settings.xml trong Apache Maven trong bài viết này để các bạn hiểu rõ thêm về nó, các bạn nhé!
Điều đầu tiên mình sẽ nói về location của tập tin này.
Mặc định, khi các bạn download tập tin cài đặt của Apache Maven và giải nén tập tin này ra, tập tin settings.xml sẽ mặc định nằm ở thư mục conf trong thư mục cài đặt của Apache Maven.
Một location khác của tập tin settings.xml này là nằm ở thư mục .m2 trong thư mục người dùng.
Nếu các bạn cùng lúc có 2 tập tin settings.xml nằm trong 2 thư mục trên thì cấu hình trong 2 tập tin này sẽ được merge với nhau. Đối với những cấu hình chung thì cấu hình trong tập tin settings.xml ở thư mục người dùng sẽ có độ ưu tiên cao hơn.
Tiếp theo mình sẽ nói về nội dung của tập tin settings.xml.
Nếu các bạn mở tập tin settings.xml nằm trong thư mục conf của thư mục cài đặt của Apache Maven, các bạn sẽ thấy nội dung của tập tin này bao gồm một thẻ root <settings> và một số thẻ con, cụ thể như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd"> <localRepository/> <interactiveMode/> <offline/> <pluginGroups/> <proxies/> <servers/> <mirrors/> <profiles/> <activeProfiles/> </settings> |
Trong đó, các thẻ <localRepository/>, <interactiveMode/>, <offline/> là những thẻ sẽ được cấu hình với các giá trị đơn giản.
Thẻ <localRepository/> dùng để chúng ta chỉ định location của Maven Local Repository, location mặc định thì sẽ trỏ đến thư mục .m2/repository nằm trong thư mục người dùng. Các bạn có thể thay đổi location này nếu muốn.
Ví dụ của mình như sau:
1 |
<localRepository>/Volumes/Passport/softwares/.m2/repository</localRepository> |
Vậy là được rồi đó các bạn! Từ bây giờ, mỗi khi build project với Apache Maven trong máy của mình, các dependencies sẽ được download và lưu trữ trong thư mục /Volumes/Passport/softwares/mvn/repository.
Thẻ <interactiveMode/> cho phép Apache Maven có thể tương tác trực tiếp của input từ người dùng hay không? Giá trị mặc định của thẻ này là true, nghĩa là cho phép đó các bạn.
Thẻ <offline/> dùng để chỉ định Apache Maven có làm việc với offline mode hay không? Thường chúng ta sẽ sử dụng trong trường hợp Apache Maven không thể connect tới các remote repository. Khi đó, giá trị của thẻ này sẽ là true, mặc định thì giá trị của thẻ này là false nhé các bạn.
Thẻ <pluginGroups/> sẽ chứa một danh sách các thẻ <pluginGroup>, dùng để cấu hình groupId cho các plugin mà chúng ta sẽ sử dụng trong các Maven project của mình, ví dụ:
1 2 3 |
<pluginGroups> <pluginGroup>org.mortbay.jetty</pluginGroup> </pluginGroups> |
Thẻ <proxies/> được sử dụng trong trường hợp các bạn cần sử dụng proxy để có thể download các dependencies.
Ví dụ như:
1 2 3 4 5 6 7 8 9 10 11 12 |
<proxies> <proxy> <id>huongdanjava</id> <active>true</active> <protocol>http</protocol> <host>proxy.huongdanjava.com</host> <port>8080</port> <username>khanh</username> <password>123456</password> <nonProxyHosts>*.google.com</nonProxyHosts> </proxy> </proxies> |
Chúng ta có thể khai báo nhiều proxy trong thẻ <proxies> này, mỗi proxy sẽ được indentify bởi thẻ <id>. Các bạn có thể chỉ định proxy nào được active với thẻ <active>. Như các bạn thấy, chúng ta sẽ khai báo thông tin về proxy sử dụng các thẻ <protocol>, <host>, <port>, <username>, <password>. Đối với những kết nối không cần phải sử dụng proxy thì các bạn sử dụng thẻ <nonProxyHosts> để loại trừ chúng.