2011-01-14 23 views
7

私はHTMLレポートを作成するAntタスクを持っています。 Antタスクからブラウザにそのレポートを自動的に読み込むことは可能ですか?そうであれば、ユーザーに依存しない方法で行うことは可能ですか、カスタムユーザープロパティを使用する必要がありますか?Antを使用すると、ブラウザでファイルを開くにはどうすればよいですか?

おかげで、

ポール

答えて

6

は、システムコマンドを実行するAntのexecタスクを使用してみてください。

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

その文書からの例:これを行うには

<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

一つの方法は、ファイル名でお好みのブラウザを起動することです。 Antをお持ちの場合

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

Firefoxを起動します。

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

私はアリのオプションタスクなくして、出口を見ていない:私たちはJavaで行うよう

7

は、独立した方法があります。すべてのスクリプトから、beanhellは最も軽量に見え、新しい知識を必要としません。だから私はそれをこのようでした:

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

をそして、これはscriptタスクを実行し得ることについてan answerです。しかし、javascriptという言語は、JDK 6にはclasspath(およびmanager)のコードを必要としません。実際のコードは同じです。私のbuild.propertiesで

#Browser 
browser = open 
browser.args = -a Firefox 
私のbuild.xmlで

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

これをGabor '私はそれを働かせるためにもう少し何かをしなければならなかった。私のコードは次のとおりです。

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

ディレクトリにプロジェクト名を追加し、スペースを "%20"に置き換えなければなりませんでした。その後、正常に動作しました。

7

を私はJavaScriptで<script>を使用:

<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

私はそれをやった方法

4

私が「1.21ギガワット」の回答に基づいて、プラットフォームに依存しているソリューションを必要とする:

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

これは、とアリに呼び出すことができます。これは、指定したHTMLファイルを開きます

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

。置き換えます( "%3A"、 ":"); '私は' location.toString()を使用しました。 – Clintm

0

システムデフォルトブラウザでは、純粋なAntのみを使用しています。私は(A)のprintlnを削除(し、代わりにアリからのパスをエコー)と(b)の代わりに `location.toString()のに持っていた、これはJavaの8とJava 7で動作するように取得するために

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

<exec executable="cmd" spawn="yes"> 
    <arg value="/c" /> 
    <arg value="${report.file}" /> 
</exec> 
関連する問題