2009-07-06 60 views
166

Có một "giai đoạn" hoặc "mục tiêu" của Maven chỉ đơn giản là thực thi phương thức chính của một lớp Java không? Tôi có một dự án mà tôi muốn thử nghiệm bằng tay bằng cách đơn giản làm một cái gì đó như "mvn run".Dự án Maven Run

Trả lời

270

Xem exec maven plugin. Bạn có thể chạy các lớp Java bằng cách sử dụng:

mvn exec:java -Dexec.mainClass="com.example.Main" [-Dexec.args="argument1"] ... 

Gọi có thể đơn giản là mvn exec:java nếu cấu hình plugin nằm trong tệp pom.xml của bạn. Trang web plugin trên Mojohaus có more detailed example.

<project> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <configuration> 
        <mainClass>com.example.Main</mainClass> 
        <arguments> 
         <argument>argument1</argument> 
        </arguments> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+0

exec: java không làm gì cho tôi, nhưng exec: exec đã thực hiện thủ thuật. –

+5

đây là câu trả lời trông như thế nào! tham khảo + ví dụ đơn giản + ví dụ phức tạp. ví dụ đơn giản đã làm các trick cho tôi (không cần cấu hình thêm) – codewing

+1

có phiên bản mới hơn của plugin này (mới hơn 1.2.1 không?) –

0

clean package exec:java -P Class_Containing_Main_Method lệnh cũng là một lựa chọn nếu bạn chỉ có một phương thức Main (PSVM) trong dự án, với Setup Maven sau.

Đừng quên đề cập đến lớp trong phần <properties></properties> của pom.xml:

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.main.class>com.test.service.MainTester</java.main.class> 
</properties> 

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2.1</version> 
     <configuration> 
      <mainClass>${java.main.class}</mainClass> 
     </configuration> 
</plugin> 

STS Run Cấu hình cùng với trên Maven Setup:

enter image description here

+0

Điều đó không có vẻ ngay với tôi. Không phải là -P cho 'hồ sơ'? Nếu bạn đang xác định nó trên dòng lệnh tại sao bạn cần phải đặt nó trong các thuộc tính của plugin? – Rup

+0

@Rup Có, '-P' là dành cho cấu hình. Chia sẻ điều này, vì nó cũng là một tùy chọn chạy dự án Maven. – Abhijeet

8

Các nêu trên câu trả lời là chính xác nhưng tôi đơn giản hóa nó cho noobs như tôi.Đi đến tệp pom của dự án của bạn. Thêm thuộc tính mới exec.mainClass và đặt giá trị của nó làm lớp chứa phương thức chính của bạn. Đối với tôi, nó là DriverClass trong mainpkg. Thay đổi nó theo dự án của bạn. enter image description here

Sau khi thực hiện điều hướng này đến thư mục chứa dự án của bạn pom.xml và chạy điều này trên dấu nhắc lệnh mvn exec:java. Điều này nên gọi phương thức chính.

4

Không cần thêm plugin mới trong tệp pom.xml. Chỉ cần chạy lệnh này

mvn org.codehaus.mojo:exec-maven-plugin:1.5.0:java -Dexec.mainClass="com.example.Main" | grep -Ev '(^\[|Download\w+:)' 

Xem maven exec plugin để biết thêm sử dụng.

+0

Truyền thêm đối số qua '-Dexec.args =" ... arg ... "' – sstn

Các vấn đề liên quan