2011-01-14 18 views
7

Tengo una tarea Ant que crea un informe HTML. ¿Es posible cargar ese informe automáticamente en un navegador desde la tarea Ant? Si es así, ¿es posible hacerlo de una manera independiente del usuario o requeriría el uso de propiedades de usuario personalizadas?Usando Ant, ¿cómo abro un archivo en un navegador?

Gracias,

Paul

Respuesta

6

Trate de usar la tarea de Ant exec para ejecutar un comando del sistema.

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

Un ejemplo de ese documento:

<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

Una forma de hacer esto es invocar su navegador favorito con el nombre de archivo. Si tiene Ant ejecutar

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

lanzará Firefox con ese archivo.

7

hay una manera independiente, como lo hacemos en java:

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

no veo ninguna salida sin tareas opcionales de hormigas. De todos los scripts, beanshell parece más liviano y no requiere ningún conocimiento nuevo. Así que lo hice de esta manera:

<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> 

y esto es an answer sobre conseguir script tarea en ejecución. Sin embargo, el lenguaje javascript es una mejor opción, ya que no necesita classpath (y no manager) en JDK 6. Y el código en el interior sigue siendo el mismo.

4

¿Cómo lo hice:

En mis build.properties

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

En mi build.xml

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

Solía ​​<script> con 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

Basando esto en Gabor ' La respuesta de S tenía que hacer algunas cosas más para que funcione. Aquí está mi código:

<!-- 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> 

que tenía que añadir el nombre del proyecto en el directorio y reemplazar los espacios con "20%". Después de eso funcionó bien.

4

que necesitan una solución que es independiente de la plataforma, por lo que en base a la respuesta "1.21 gigavatios":

<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> 

Esto puede ser llamado en la hormiga con:

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

Con el fin de conseguir que esto funcione con Java y Java 7 8 tuve que (a) eliminar println (y hacerse eco de la ruta de en vez de hormigas) y (b) en lugar de 'location.toString(). Reemplace ("% 3A", ":"); 'Utilicé' location.toString(). ReplaceAll ("% 3A", ":"); ' – Clintm

0

Esto abre el archivo HTML dada en el navegador predeterminado del sistema usando únicamente Ant puro.

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

<exec executable="cmd" spawn="yes"> 
    <arg value="/c" /> 
    <arg value="${report.file}" /> 
</exec> 
Cuestiones relacionadas