2011-01-14 8 views
7

J'ai une tâche Ant qui crée un rapport HTML. Est-il possible de charger ce rapport automatiquement dans un navigateur à partir de la tâche Ant? Si oui, est-ce possible de le faire d'une manière indépendante de l'utilisateur ou cela nécessiterait-il l'utilisation de propriétés utilisateur personnalisées?En utilisant Ant, comment ouvrir un fichier dans un navigateur?

Merci,

Paul

Répondre

6

Essayez d'utiliser la tâche exec Ant pour exécuter une commande de système.

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

Un exemple de ce document:

<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

Une façon de le faire est d'appeler votre navigateur favori avec le nom du fichier. Si vous avez Ant exécuter

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

il va lancer Firefox avec ce fichier.

7

Il y a une manière indépendante, comme nous le faisons en java:

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

Je ne vois pas quitter sans fourmis tâches facultatives. De tous les scripts, beanshell a l'air le plus léger et ne nécessite aucune nouvelle connaissance. Donc, je l'ai fait de cette façon:

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

Et c'est an answer à obtenir script exécution des tâches. Cependant le langage javascript est en effet une meilleure option, car il n'a pas besoin de classpath (et pas de manager) dans JDK 6. Et le code à l'intérieur reste le même.

4

Comment je l'ai fait:

Dans mes build.properties

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

Dans mon build.xml

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

je <script> avec 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

En basant cela sur Gabor s réponse je devais faire un peu plus de choses pour le faire fonctionner. Voici mon code:

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

je devais ajouter le nom du projet dans le répertoire et remplacer les espaces par « % 20 ». Après ça ça a bien marché.

4

je besoin d'une solution qui est la plate-forme indépendante, donc en fonction de réponse « 1,21 gigawatts »:

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

Cela peut être appelé fourmi avec:

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

Pour que cela fonctionne avec Java et Java 8 7 je devais (a) enlever println (et l'écho le chemin de la place ant) ​​et (b) au lieu de 'location.toString(). Remplacer ("% 3A", ":"); 'J'ai utilisé' location.toString(). ReplaceAll ("% 3A", ":"); ' – Clintm

0

Cela ouvre le fichier HTML donné dans le navigateur par défaut du système en utilisant uniquement Ant pur.

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

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