在Jenkins CI中预编译JSP

时间:2013-05-15 00:18:53

标签: jsp ant jenkins

有人在Jenkins CI中调用了一个使用JspC预编译JSP的ant脚本吗?我正在尝试迁移我的项目以使用Jenkins,当我调用我的ant脚本时,我一直得到以下异常:

org.apache.jasper.JasperException:file:/ demo /workspace/Trunk/src/main/webapp/pages/test.jsp(line:9,column:0)useBean类属性的值org.demo .model.UserAccount无效。

ant脚本在Jenkins之外运行良好,但不会在其中运行而没有错误。想法?

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<jsp:useBean id="User" class="com.demo.model.UserAccount"/>
<c:url var="saveUserUrl" value="/account/save.html" />

<form:form modelAttribute="account" method="POST" action="${saveUserUrl}">  
<form:errors path="*" cssClass="statusError" element="p" htmlEscape="false" />
<form:hidden path="id"/>

    <div style="width:60%"> 
        <fieldset>          
            <p class="field">
                <label for="">First Name</label>
                <form:input path="firstName" title="First name"/>
            </p>            
            <p class="field">
                <label for="">Last Name</label>
                <form:input path="lastName" title="Last name">
            </p>        
            <p class="field">
                <label for="">E-mail Address</label>
                ${account.email}
            </p>
        </fieldset>
        <p class="field">
            <input type="submit" class="button" value="Save" name="submit"/>
        </p>
    </div>  

</form:form>

1 个答案:

答案 0 :(得分:0)

你检查了你的lib路径并包含了吗?根据JSP文档,JSP:UseBean任务将首先尝试在路径中查找bean。如果它确实找到了那个类,那么我不知道它是否会注意你在这一点下面键入的内容。 bean的哪个声明优先?内联或它在路径中找到了什么?

http://profesores.elo.utfsm.cl/~agv/elo330/2s03/projects/Tomcat/doc/1.2/syntaxref1217.html

此外,从Tomcat5开始,这个ant任务(JspC)似乎已被弃用。 https://ant.apache.org/manual/Tasks/jspc.html

Ant文档建议使用Tomcat任务而不是ant任务。 这项任务存在许多局限性,部分源于Jasper的许多版本,其他来自任务中的实现“问题”(即没有人愿意从根本上改变大部分版本来解决jasper问题)。由于这一点以及JSP页面不必跨实现 - 或实现版本 - 可移植的事实 - 此任务更好地用于在部署之前验证JSP页面,而不是预编译它们。为此,只需在部署后部署并运行您的httpunit junit测试,即可一次性编译和测试您的页面。