Tags:

Cách chạy hàm một hàm main trong Maven

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

https://www.baeldung.com/maven-java-main-method

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x