2012-10-14 29 views
5

Tôi đang cố gắng chạy JBoss TattleTale từ tệp bản dựng Ant. Thông thường tôi chạy nó từ dòng lệnh như sau:Có gì sai với các Ant/JVM này?

java -Xmx512m -jar /home/myuser/jars/tattletale.jar /home/myuser/projects/lib /home/myuser/tmp/tt 

nơi /home/myuser/projects/src là thư mục nguồn, nơi tất cả lọ của tôi là, và nơi /home/myuser/tmp/tt là thư mục đầu ra, nơi tôi đặt tất cả các báo cáo Tattletale của.

Trong buildfile Ant Tôi đang sử dụng như sau:

<echo message="Running tattle-tale..."/> 
<java fork="true" failonerror="true" jar="/home/myuser/jars/tattletale.jar"> 
    <arg value="Xmx512m"/> 
    <arg value="/home/myuser/projects/lib"/> 
    <arg value="/home/myuser/tmp/tt"/> 
</java> 

Khi tôi chạy được mục tiêu này từ dòng lệnh:

run-tattletale: 
    [echo] Running tattle-tale... 

BUILD SUCCESSFUL 
Total time: 3 seconds 

Khi tôi đi đến /home/myuser/tmp/tt Tôi không thấy bất kỳ đầu ra, tuy nhiên đầu ra Ant cho thấy SUCCESS không có lỗi hoặc cảnh báo. Làm cho tôi <arg> s nhìn chính xác, và nếu không, làm thế nào tôi nên thay đổi chúng? Nếu họ nhìn chính xác, tôi có thể làm gì để gỡ lỗi? Cảm ơn trước!

Trả lời

3

arg đầu tiên là đối số JVM không phải là đối số chương trình vì vậy <arg> là cú pháp sai. Trong trường hợp này, việc sử dụng tham số maxmemory của nhiệm vụ java sẽ dễ dàng hơn.

Vì vậy, hãy xóa <arg> đầu tiên và đặt maxmemory=512m trong khối <java>.

+0

Cảm ơn @Mike Q (+1) - nhưng tôi vẫn không thấy bất kỳ thứ gì được tạo trong thư mục đầu ra. – IAmYourFaja

6

Hai điều:

  1. Hãy thử sử dụng các tùy chọn gỡ lỗi khi chạy Ant, và lưu kết quả vào một logfile. Sau đó nhìn vào tệp nhật ký. Nó sẽ cho bạn biết cách thực hiện lệnh Java. Điều đó sẽ giúp bạn tìm ra nơi Ant <java> khác với cách bạn chạy Java trực tiếp từ dòng lệnh. Nó sẽ cho bạn khả năng tweek nhiệm vụ <java> của bạn.

  2. Khi một tham số là cho java lệnh riêng của mình, bạn sử dụng <jvmarg> và không <arg>:

Một ví dụ:

<echo message="Running tattle-tale..."/> 
<java fork="true" 
    failonerror="true" 
    jar="/home/myuser/jars/tattletale.jar"> 
    <jvmarg value="-Xmx512m"/> <!-- Note the dash! --> 
    <arg value="/home/myuser/projects/lib"/> 
    <arg value="/home/myuser/tmp/tt"/> 
</java> 

Hãy thử điều đó, và chạy với ant -d | tee ant.out nếu bạn trên Unix/Linux. Trên Windows, bạn sẽ phải thực hiện ant -d > ant.out.txt để lưu kết quả đầu ra trong ant.out.txt, nhưng sẽ không hiển thị đầu ra trong khi ant đang chạy.

1

Nếu bạn không thấy đầu ra trong thư mục đích, có thể do 1) không có lưu trữ trong thư mục nhập đã cho hoặc 2) quá trình tattletale không thành công. Trong trường hợp thất bại hoặc ngoại lệ, quá trình tattletale dường như trả lại mã thoát 0 và nó làm cho kiến ​​tin rằng quá trình thực hiện thành công.

Để gỡ lỗi, tôi đề nghị bạn đảm bảo thư mục nhất định là đúng và có lưu trữ java (jar) tập tin và phân tích chuẩn đầu ra/lỗi sản xuất bởi tattletale.

Ví dụ:

<echo message="Running tattle-tale..."/> 
<java fork="true" 
    failonerror="false" 
    errorproperty="errorproperty" 
    outputproperty="outputproperty" 
    jar="/home/myuser/jars/tattletale.jar"> 
    <jvmarg value="-Xmx512m"/> <!-- Note the dash! --> 
    <arg value="/home/myuser/projects/lib"/> 
    <arg value="/home/myuser/tmp/tt"/> 
</java> 
<echo message="stdout>> ${outputproperty}"/> 
<echo message="stderr>> ${errorproperty}" /> 

Lưu ý: - failonerror là sai tạm thời cho chỉ mục đích gỡ lỗi.

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