Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu cách chạy một màn main tùy ý từ bất kỳ class nào trong maven.
exec-maven-plugin
Giả sử chúng ta có một class như sau:
package com.deft; public class Main { public static void main(String[] args) { System.out.println("com.deft.Main method exec"); for (int i = 0; i < args.length; i++) { System.out.println("Param " + i + ": " + args[i]); } } }
Và chúng ta muốn thực thi hàm main này từ commandline thông qua maven. Để làm được điều này chúng ta có thể sử dụng exec-maven-plugin. Cụ thể, exec:java goal từ plugin này sẽ thực thi hàm main của Java class được cung cấp trong lệnh cmd.
Ví dụ nếu muốn thực thi hàm main trong com.deft.Main class chúng ta có thể chạy lệnh maven như sau:
>mvn compile exec:java -Dexec.mainClass="com.deft.Main" [INFO] --- exec-maven-plugin:3.0.0:java (default-cli) @ demo --- com.deft.Main method exec
Kết quả là chúng ta đã thực thi thành công hàm main, tuy nhiên các bạn cần lưu ý trong lần đầu chạy có thể sẽ không thành công vì nó sẽ tiến hành download một số dependency cần thiết. Nếu gặp lỗi các bạn cố chạy lại thêm một lần nữa xem sao nhé.
Tham số đầu vào
Ngoài ra chúng ta cũng có thể truyền tham số đầu vào cho hàm main thông qua maven với thuộc tính exec.args.
mvn compile exec:java -Dexec.mainClass="com.deft.Main" -Dexec.args="Hello Deft" [INFO] --- exec-maven-plugin:3.0.0:java (default-cli) @ demo --- com.deft.Main method exec Param 0: Hello Param 1: Deft
Chúng ta có thể thấy mỗi tham số được tách biệt dấu khoảng trắng, ngoài ra chúng ta có thể tách các tham số đầu vào bằng dấu phẩy thông qua thuộc tính exec.arguments.
mvn compile exec:java -Dexec.mainClass="com.deft.Main" -Dexec.arguments="Hello deft, done" [INFO] --- exec-maven-plugin:3.0.0:java (default-cli) @ demo --- com.deft.Main method exec Param 0: Hello deft Param 1: done
Custom Configuration
Ngoài ra chúng ta có thể khai báo sử dụng exec-maven-plugin trong file pom.xml và cấu hình hàm main cần thực thi.
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>demo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.0.0</version> <configuration> <mainClass>com.deft.Main</mainClass> </configuration> </plugin> </plugins> </build> </project>
Giờ chúng ta có thể thực thông qua lệnh maven sau
mvn compile exec:java
Để thêm tham số đầu vào chúng ta có thể cấu hình trong thẻ <arguments>
<configuration> <mainClass>com.deft.Main</mainClass> <arguments> <argument>First</argument> <argument>Second</argument> </arguments> </configuration>
Bằng cách này, chúng ta sẽ không cần phải chuyển các tham số này trên dòng lệnh commandline.
Nguồn tham khảo