我有一个创建HTML报告的Ant任务。是否可以从Ant任务在浏览器中自动加载该报告?如果是这样,是否可以以独立于用户的方式执行此操作,还是需要使用自定义用户属性?
谢谢,
保
答案 0 :(得分:7)
有一种独立的方式,就像我们在java中一样:
Desktop.getDesktop.open(new File("file.html")) ?
如果没有ant可选任务,我看不到退出。从所有脚本看,beanshell看起来最轻量级,不需要任何新知识。所以我这样做了:
<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>
这是an answer关于让script
任务运行的问题。但是javascript
语言确实是一个更好的选择,因为它在JDK 6中不需要classpath
(并且没有manager
)。内部的代码保持不变。
答案 1 :(得分:7)
我将<script>
与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 :(得分: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>
答案 3 :(得分:4)
我是怎么做到的:
在我的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 :(得分: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>
这可以在ant中调用:
<open file="C:\index.html" />
答案 5 :(得分:2)
执行此操作的一种方法是使用文件名调用您喜欢的浏览器。如果你有Ant执行
firefox "file:///G:/Report.html"
它将使用该文件启动Firefox。
答案 6 :(得分:2)
基于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 :(得分:0)
这将仅使用纯Ant打开系统默认浏览器中的给定HTML文件。
<property name="report.file" value="${temp.dir}/report/index.html" />
<exec executable="cmd" spawn="yes">
<arg value="/c" />
<arg value="${report.file}" />
</exec>