我正在尝试在gradle中使用jspc来编译我们的jsp文件,但是却遇到了异常。

这是相关的gradle部分

//tomcatHome is defined in gradle.properties
ant.tomcatHome = "${tomcatHome}"
ant.webAppDir = "${webAppDir}"
ant.importBuild 'jspc.xml'
test.dependsOn jspc

和jspc.xml ant文件
<?xml version="1.0"?>

<project name="jspc" basedir="." default="jspc">
  <!-- Import tasks from Tomcat -->
  <import file="${tomcatHome}/bin/catalina-tasks.xml" />

  <target name="jspc">
    <jasper validateXml="false" uriroot="${webAppDir}" />
  </target>
</project>

存储库部分:
repositories {
  mavenRepo urls: 'http://repository.jboss.org/nexus/content/groups/public-jboss'
  mavenRepo urls: 'http://oss.sonatype.org/content/repositories/sourceforge-releases'
  mavenRepo urls: 'http://google-gson.googlecode.com/svn/mavenrepo'
  mavenCentral()
}

依赖项部分:
dependencies {

  springVersion = '3.0.4.RELEASE'
  securityVersion = '3.0.5.RELEASE'

  //Compile time local dependencies
  compile fileTree(dir: 'staticLib', include: '*.jar')

  //Compile time but not included dependencies
  providedCompile group: 'javax.servlet', name: 'servlet-api', version:'2.5'
  providedCompile group: 'javax.servlet', name: 'jstl', version: '1.1.2'
  providedCompile group: 'taglibs', name: 'standard', version: '1.1.2'

  //Compile time remote dependencies
  compile group: 'com.google.code.gson', name:'gson', version: '1.7.1'
  compile group: 'com.google.visualization', name: 'visualization-datasource', version: '1.0.2'
  compile group: 'com.ibm.icu', name:'icu4j', version: '4.6.1'
  compile group: 'commons-codec', name: 'commons-codec', version: '1.4'
  compile group: 'commons-collections', name: 'commons-collections', version: '3.2.1'
  compile group: 'commons-dbcp', name: 'commons-dbcp', version: '1.4'
  compile group: 'commons-io', name: 'commons-io', version: '1.4'
  compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
  compile group: 'commons-logging', name: 'commons-logging', version: '1.1.1'
  compile group: 'commons-pool', name: 'commons-pool', version: '1.5.5'
  compile group: 'javax.inject', name: 'javax.inject', version: '1'
  compile group: 'javax.servlet', name: 'jstl', version: '1.2'
  compile group: 'joda-time', name: 'joda-time', version: '1.6.2'
  compile group: 'log4j', name: 'log4j', version: '1.2.15'
  compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.15'
  compile group: 'net.sf.ehcache', name: 'ehcache-core', version: '2.4.0'
  compile group: 'net.sf.ofx4j', name: 'ofx4j', version: '1.4'
  compile group: 'org.codehaus.jackson', name: 'jackson-mapper-asl', version: '1.7.2'
  compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.2.Final'
  compile group: 'org.hibernate', name: 'hibernate-validator', version: '4.1.0.Final'
  compile group: 'org.ostermiller', name: 'utils', version: '1.07.00'
  compile group: 'org.springframework', name: 'spring-aop', version: springVersion
  compile group: 'org.springframework', name: 'spring-asm', version: springVersion
  compile group: 'org.springframework', name: 'spring-aspects', version: springVersion
  compile group: 'org.springframework', name: 'spring-beans', version: springVersion
  compile group: 'org.springframework', name: 'spring-context', version: springVersion
  compile group: 'org.springframework', name: 'spring-core', version: springVersion
  compile group: 'org.springframework', name: 'spring-expression', version: springVersion
  compile group: 'org.springframework', name: 'spring-instrument', version: springVersion
  compile group: 'org.springframework', name: 'spring-jdbc', version: springVersion
  compile group: 'org.springframework', name: 'spring-jms', version: springVersion
  compile group: 'org.springframework', name: 'spring-orm', version: springVersion
  compile group: 'org.springframework', name: 'spring-oxm', version: springVersion
  compile group: 'org.springframework', name: 'spring-tx', version: springVersion
  compile group: 'org.springframework', name: 'spring-web', version: springVersion
  compile group: 'org.springframework', name: 'spring-webmvc', version: springVersion
  compile group: 'org.springframework.security', name: 'spring-security-acl', version: securityVersion
  compile group: 'org.springframework.security', name: 'spring-security-aspects', version: securityVersion
  compile group: 'org.springframework.security', name: 'spring-security-cas-client', version: securityVersion
  compile group: 'org.springframework.security', name: 'spring-security-config', version: securityVersion
  compile group: 'org.springframework.security', name: 'spring-security-core', version: securityVersion
  compile group: 'org.springframework.security', name: 'spring-security-ldap', version: securityVersion
  compile group: 'org.springframework.security', name: 'spring-security-taglibs', version: securityVersion
  compile group: 'org.springframework.security', name: 'spring-security-web', version: securityVersion
  compile group: 'uk.com.robust-it', name: 'cloning', version: '1.7.4'

  //Runtime dependencies
  runtime group: 'commons-fileupload', name: 'commons-fileupload', version: '1.2.2'
  runtime group: 'javassist', name: 'javassist', version: '3.9.0.GA'
  runtime group: 'javax.mail', name: 'mail', version: '1.4'
  runtime group: 'org.codehaus.jackson', name: 'jackson-mapper-asl', version: '1.7.4'
  runtime group: 'org.codehaus.jackson', name: 'jackson-core-asl', version: '1.7.4'
  runtime group: 'org.slf4j', name: 'slf4j-api', version: '1.6.1'
  runtime group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.6.1'

  //Test dependencies
  testCompile group: 'cglib', name: 'cglib-nodep', version: '2.2'
  testCompile group: 'junit', name: 'junit', version: '4.8.2'
  testCompile group: 'org.mockito', name: 'mockito-all', version: '1.8.5'
  testCompile group: 'org.springframework', name: 'spring-test', version: springVersion
}

异常(exception)是:
Cause: file:myfile.jsp(1,1) The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
有任何想法吗?

最佳答案

可以使用包含类catalina-tasks.xml的Tomcat JAR文件代替使用Tomcat的bin目录中的org.apache.jasper.JspC。如果您的JSP编译缺少任何库,则可以轻松地将它们添加到配置jasper中。

configurations {
    jasper
}

repositories {
    mavenCentral()
}

dependencies {
    jasper 'org.apache.tomcat:jasper:6.0.33',
           'javax.servlet:jstl:1.1.2',
           'taglibs:standard:1.1.2'
}

test.doLast {
    ant.taskdef(classname: 'org.apache.jasper.JspC', name: 'jasper', classpath: configurations.jasper.asPath)
    ant.jasper(validateXml: false, uriRoot: webAppDir, outputDir: "$buildDir/jspc")
}

08-16 04:01