Ở bài viết trước, mình đã giới thiệu với các bạn một số cấu hình cơ bản trong tập tin settings.xml của Apache Maven với các thẻ <localRepository/>, <interactiveMode/>, <offline/>, <pluginGroups/>, <proxies/>. Trong bài viết này, chúng ta sẽ tìm hiểu thêm về một số phần quan trọng nữa trong tập tin cấu hình của Apache Maven sử dụng các thẻ <profiles/>, <mirrors/>, <servers/>, <activeProfiles/>, các bạn nhé.
Đầu tiên là thẻ <profiles>.
Thẻ này sẽ chứa nhiều thẻ con <profile> cho phép chúng ta định nghĩa nhiều profile khác nhau.
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<profiles> <profile> <id>huongdanjava</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>huongdanjava-releases</id> <name>Huong Dan Java Releases</name> <url>http://localhost:8081/repository/huongdanjava-releases/</url> <layout>default</layout> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>huongdanjava-releases</id> <name>Huong Dan Java Releases</name> <url>http://localhost:8081/repository/huongdanjava-releases/</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> |
Mỗi một profile chúng ta cần định nghĩa một id riêng để phân biệt so với những profile khác bằng cách sử dụng thẻ <id> bên trong thẻ này. Thẻ <profile> cũng sẽ chứa một số thẻ con như sau:
- <activation>
Thẻ con này sẽ quyết định là mặc định profile này được sử dụng hay không khi chúng ta chạy câu lệnh của Apache Maven. Để làm được điều này, chúng ta cần khai báo thêm thẻ <activeByDefault> bên trong thẻ <activation> này, giá trị của thẻ <activeByDefault> sẽ là true hoặc false và giá trị này sẽ quyết định profile này có được sử dụng mặc định hay không?
- <repositories>
Thẻ này dùng để cấu hình thông tin các Maven Repository chứa các dependencies mà các bạn cần sử dụng trong các dự án của mình. Mỗi Maven Repository sẽ được khai báo với một thẻ con <repository> bên trong thẻ <repositories> này. Thông tin của các Maven Repository sẽ được cấu hình thông qua các thẻ <id>, <name>, <url> như các bạn thấy trong ví dụ trên. <layout> là default có nghĩa là chúng ta sẽ sử dụng format chuẩn của Apache Maven.
Các bạn hãy tham khảo thêm bài viết Tạo mới Maven Repository trong Nexus Repository Manager để biết cách tạo mới Maven Repository cho riêng mình nhé.
- <pluginRepositories>
Thẻ này cũng tương tự như thẻ <repositories>, sẽ chứa các thẻ <pluginRepository> để định nghĩa cho các Maven Repository chứa các plugin mà các bạn cần sử dụng trong các dự án của mình. Chúng ta cũng có các thông tin về <id>, <name>, <url> cần cấu hình cho phần <pluginRepository> này.
- <properties>
Thẻ này không có trong ví dụ ở trên nhưng nếu các bạn có nhu cầu định nghĩa trước một số properties cần sử dụng trong các Maven project của mình thì hãy khai báo thẻ này nhé. Nó tương tự như khi chúng ta khai báo thẻ <properties> trong tập tin pom.xml mà thôi. 🙂
Tiếp theo chúng ta sẽ tìm hiểu đến thẻ <mirrors>
Thẻ này chúng ta dùng để khai báo thông tin các Maven Repository có thể thay thế cho những Maven Repository mà chúng ta đã khai báo trong thẻ <repository> hay <pluginRepository>.
Ví dụ:
1 2 3 4 5 6 7 8 |
<mirrors> <mirror> <id>huongdanjava-releases-mirror</id> <name>Huong Dan Java Releases Mirror</name> <url>http://192.168.2.21:8081/repository/huongdanjava-releases/</url> <mirrorOf>huongdanjava-releases</mirrorOf> </mirror> </mirrors> |
Chúng ta có thể khai báo nhiều thẻ <mirror> bên trong thẻ <mirrors>. Các thông tin của mỗi <mirror> cũng tương tự như khi chúng ta khai báo các thẻ <repository> hay <pluginRepository>, chỉ có thêm một thẻ nữa để xác định Maven Repository được khai báo trong thẻ <mirror> này là Maven Repository thay thế cho Maven Repository chính nào, đó chính là thẻ <mirrorOf>.
Trong ví dụ trên, mình khai báo id của repository trong ví dụ về thẻ <profiles> là huongdanjava-releases sẽ có mirror là id của repository huongdanjava-releases-mirror.
Tiếp theo nữa chúng ta sẽ tìm hiểu về thẻ <servers>.
Thẻ này giúp chúng ta khai báo thông tin về username, password cho các Maven Repository khi việc sử dụng các Maven Repository này cần phải đăng nhập.
Nó sẽ bao gồm một hoặc nhiều thẻ con <server>, ví dụ như sau:
1 2 3 4 5 6 7 |
<servers> <server> <id>huongdanjava-releases</id> <username>deployer</username> <password>123456</password> </server> </servers> |
Chúng ta sử dụng các thẻ <username>, <password> để khai báo các thông tin về username, password và thẻ <id> để khai báo id của Maven Repository mà chúng ta cần sử dụng thông tin username, password này.
Cuối cùng là thẻ <activeProfiles/>.
Thẻ này giúp chúng ta định nghĩa các profile mà chúng ta cần sử dụng by default.
Ví dụ:
1 2 3 |
<activeProfiles> <activeProfile>huongdanjava</activeProfile> </activeProfiles> |
Giá trị của thẻ <activeProfile> sẽ là id của profile các bạn nhé!