2011-01-14 27 views
7

Tôi có tác vụ Ant tạo báo cáo HTML. Có thể tự động tải báo cáo đó trong trình duyệt từ tác vụ Ant không? Nếu vậy, có thể làm như vậy theo cách độc lập với người dùng hay nó sẽ yêu cầu sử dụng thuộc tính người dùng tùy chỉnh?Sử dụng Ant, làm cách nào để mở tệp trong trình duyệt?

Cảm ơn,

Paul

Trả lời

6

Hãy thử sử dụng exec nhiệm vụ của Ant để thực hiện một lệnh hệ thống.

http://ant.apache.org/manual/Tasks/exec.html

Một ví dụ từ tài liệu đó:

<property name="browser" location="C:/Program Files/Internet Explorer/iexplore.exe"/> 
<property name="file" location="ant/docs/manual/index.html"/> 

<exec executable="${browser}" spawn="true"> 
    <arg value="${file}"/> 
</exec> 
2

Một cách để làm điều này là để gọi trình duyệt yêu thích của bạn với tên tập tin. Nếu bạn có Ant thực thi

firefox "file:///G:/Report.html" 

nó sẽ khởi chạy Firefox với tệp đó.

7

Có một cách độc lập, giống như chúng ta làm trong java:

Desktop.getDesktop.open(new File("file.html")) ? 

Tôi thấy không có lối ra mà không nhiệm vụ bắt buộc kiến. Từ tất cả các kịch bản beanshell trông nhẹ nhất và không yêu cầu bất kỳ kiến ​​thức mới. Vì vậy, tôi đã làm điều đó theo cách này:

<property name="bshJar" value=" 
    C:\lang\java\bsh-1.3.0.jar: 
    C:\lang\java\bsf.jar: 
    C:\lang\java\commons-logging-1.1.1.jar" /> 
<script manager="bsf" language="beanshell" classpath="${bshJar}"> 
    java.awt.Desktop.getDesktop().open(
    new java.io.File("c:\\temp\\1\\stackoverflow\\DVD FAQ.htm")); 
</script> 

Và đây là an answer về việc script nhiệm vụ đang chạy. Tuy nhiên, javascript ngôn ngữ thực sự là một lựa chọn tốt hơn, vì nó không cần classpath (và không có manager) trong JDK 6. Và mã bên trong vẫn giữ nguyên.

4

Làm thế nào tôi đã làm nó:

Trong build.properties tôi

#Browser 
browser = open 
browser.args = -a Firefox 

Trong build.xml tôi

<target name="openCoverage"> 
    <exec executable="${browser}" spawn="yes"> 
     <arg line="${browser.args}" /> 
     <arg line="${unit.html}" /> 
    </exec> 
</target> 
7

tôi đã sử dụng <script> với javascript:

<property name="mydirectory" location="target/report"/> 

<script language="javascript"><![CDATA[ 
    location = "file:///"+project.getProperty("mydirectory").toString().replaceAll("\\\\","/")+"/index.html"; 
    java.awt.Desktop.getDesktop().browse(java.net.URI.create(location)); 
]]></script> 
2

Căn cứ vào Gabor ' s trả lời tôi đã phải làm một vài điều nữa để có được nó để làm việc. Đây là mã của tôi:

<!-- Build and output the Avenue.swf--> 
    <target name="Open in browser" > 
    <property name="myDirectory" location="BuildTest/bin-debug"/> 

    <script language="javascript"> 
     <![CDATA[ 
      var location = "file:///"+project.getProperty("myDirectory").toString().replaceAll("\\\\","/")+"/BuildTest.html"; 
      location = location.toString().replace(/ /g, "%20"); 
      // show URL - copy and paste into browser address bar to test location 
      println(location); 
      var uriLocation = java.net.URI.create(location); 
      var desktop = java.awt.Desktop.getDesktop(); 
      desktop.browse(uriLocation); 
     ]]> 
    </script> 
</target> 

Tôi phải thêm tên dự án vào thư mục và thay thế khoảng trắng bằng "% 20". Sau đó nó hoạt động tốt.

4

Tôi cần một giải pháp đó là nền tảng độc lập, vì vậy dựa trên "1,21 GW" câu trả lời:

<scriptdef name="open" language="javascript"> 
    <attribute name="file" /> 
    <![CDATA[ 
     var location = "file://"+attributes.get("file").toString().replaceAll("\\\\","/"); 
     location = java.net.URLEncoder.encode(location, "UTF-8"); 
     location = location.toString().replace("%3A",":"); 
     location = location.toString().replace("%2F","/"); 
     println("Opening file " + location); 
     var uriLocation = java.net.URI.create(location); 
     var desktop = java.awt.Desktop.getDesktop(); 
     desktop.browse(uriLocation); 
    ]]> 
</scriptdef> 

này có thể được gọi trong kiến ​​với:

<open file="C:\index.html" /> 
+0

Để làm việc này với Java 8 và Java 7, tôi phải (a) xóa println (và lặp lại đường dẫn từ ant) ​​và (b) thay vì 'location.toString(). ("% 3A", ":"); 'Tôi đã sử dụng' location.toString(). ReplaceAll ("% 3A", ":"); ' – Clintm

0

này mở ra các tập tin HTML cho trong trình duyệt mặc định của hệ thống chỉ sử dụng Ant thuần túy.

<property name="report.file" value="${temp.dir}/report/index.html" /> 

<exec executable="cmd" spawn="yes"> 
    <arg value="/c" /> 
    <arg value="${report.file}" /> 
</exec> 
Các vấn đề liên quan