【问题标题】:Compile All JSPs and Not Stopping On Errors编译所有 JSP 并且不会因错误而停止
【发布时间】:2013-09-11 03:29:17
【问题描述】:

我有兴趣在 Tomcat 7 中预编译我的所有 JSP 以进行调试并获取所有 JSP 编译错误的日志。我已经搜索了整个网络,并没有找到任何方法来做到这一点。

是否有人对如何使用开箱即用的开源工具执行此操作有建议?

【问题讨论】:

  • 如果你使用像eclipse这样的IDE,它应该在编辑它时标记任何编译错误
  • @fujy,感谢您的评论。我不喜欢依赖 IDE,但这种方法应该可行。我花了一些时间尝试通过 ant 脚本使用 jspc,但这种方法没有成功。幸运的是,这种批量编译的用例并不常见,因此设置时间并不是一个重要因素。

标签: jsp tomcat ant compilation


【解决方案1】:

我能够使用 Dev Shed 上记录的 ANT 构建方法完成此任务,并引用 here on Stack Overflow

完成这项工作所需的是将 failonerror="false" 添加到 javac 任务中,如下所示:

<!-- start snip from build.xml from DevShed -->
<target name="generate-jsp-java-src"> 
    <mkdir dir="${webapp.dir}/WEB-INF/jspc-src/${jspc.dir.prefix}"/>
    <taskdef classname="org.apache.jasper.JspC" name="jasper2">
        <classpath>
            <path refid="jspc.classpath"/>
        </classpath>
    </taskdef>
    <touch file="${webapp.dir}/WEB-INF/jspc-web.xml"/>
    <jasper2 uriroot="${webapp.dir}"
        package="${jspc.pkg.prefix}" 
        webXmlFragment="${webapp.dir}/WEB-INF/jspc-web.xml" 
        outputDir="${webapp.dir}/WEB-INF/jspc-src/${jspc.dir.prefix}"
        verbose="0"
        failonerror="false"
        listerrors="true"/>
</target> 
<!-- end snip from build.xml from DevShed -->

我还发现设置 verbose="0" 和 listerrors="true" 在仅显示编译/构建错误和减少不需要的日志记录方面做得更好。

我从这个练习中学到的另一个方便的注意事项是,ANT 会根据你的任务中的 javac 属性自动尝试反映 setter 方法。如果 Ant 找到匹配的签名,它将执行这个 setter 方法。例如 failonerror 将反映到 ANT 的 setFailOnError(boolean)。因此,如果您想查看其他可用的参数,您可以简单地打开 JspC.java 并查看可用的公共设置器,然后通过删除“get”并将它们设置为小写(为了保持一致性)来试一试。

我怀疑这个 ANT setter 反射在其他基于 Java 的任务中是一致的。

【讨论】:

    猜你喜欢
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多