【问题标题】:jrxml to jasper using gradlejrxml 到 jasper 使用 gradle
【发布时间】:2020-10-28 16:18:07
【问题描述】:

尝试在 gradle 中使用 ant 任务编译 jrxml 时,没有生成 jasper 文件。在 gradle 控制台中可以看到以下错误。请就此提供指点。以下是带有 ant 任务的错误 gradle 构建文件。

注意:所有需要的jasper和其他依赖jar都放在libs目录下

错误:

2020-10-28T15:09:51.520+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc] ERROR: Could not compile report [/builds/DFSDocker.Admin/rhel_dec_release/compileux/customjrxml/src/main/jasperreports/UBBDFail.jrxml]. Exception: net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
2020-10-28T15:09:51.520+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
2020-10-28T15:09:51.520+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc] calculator_UBBDFail_1603897790979_43679: 24: unable to resolve class net.sf.jasperreports.compilers.GroovyEvaluator 
2020-10-28T15:09:51.520+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc]  @ line 24, column 1.
2020-10-28T15:09:51.520+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc] calculator_UBBDFail_1603897790979_43679: 34: unable to resolve class JRFillParameter 
2020-10-28T15:09:51.520+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc]  @ line 34, column 5.
2020-10-28T15:09:51.520+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc] calculator_UBBDFail_1603897790979_43679: 35: unable to resolve class JRFillParameter 
2020-10-28T15:09:51.520+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc]  @ line 35, column 5.
2020-10-28T15:09:51.520+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc] calculator_UBBDFail_1603897790979_43679: 36: unable to resolve class JRFillParameter 
2020-10-28T15:09:51.520+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc]  @ line 36, column 5.
2020-10-28T15:09:51.521+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc] calculator_UBBDFail_1603897790979_43679: 37: unable to resolve class JRFillParameter 
2020-10-28T15:09:51.521+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc]  @ line 37, column 5.
2020-10-28T15:09:51.521+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc] calculator_UBBDFail_1603897790979_43679: 38: unable to resolve class JRFillParameter 
2020-10-28T15:09:51.521+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc]  @ line 38, column 5.
2020-10-28T15:09:51.521+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc] calculator_UBBDFail_1603897790979_43679: 39: unable to resolve class JRFillParameter 
2020-10-28T15:09:51.521+0000 [INFO] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:jrc]  @ line 39, column 5.

build.gradle

apply plugin: 'java'
repositories {
    mavenCentral()
    flatDir {
      println 'in repositories'
      dirs 'libs'
    }
}

configurations.create('jasperreports')
configurations.jasperreports {
 transitive = true
}

dependencies {
    jasperreports fileTree(dir: 'libs',include: '*.jar')
}

task compileJasperJava {
    def jasperSourceDir = file('customjrxml/src/main/jasperreports')
    def jasperTargetDir = file('customjrxml/build/classes/main/jasperreports')
    def compiler = file('customjrxml/build/classes/main/jasperreports')
    ant {
        taskdef(name: 'jrc', classname: 'net.sf.jasperreports.ant.JRAntCompileTask', classpath: configurations.jasperreports.asPath)
        jasperTargetDir.mkdirs()
        jrc(srcdir: jasperSourceDir, destdir:jasperTargetDir,compiler:'net.sf.jasperreports.compilers.JRGroovyCompiler') {
            include(name:'**/*.jrxml')
        }
    }
}

classes.dependsOn compileJasperJava

【问题讨论】:

    标签: gradle ant jasper-reports


    【解决方案1】:

    在 build.gradle 下面添加高亮显示(classpath block - remove ** before using)解决了 jasper 生成问题。

    apply plugin: 'java'
    repositories {
        mavenCentral()
        flatDir {
          println 'in repositories'
          dirs 'libs'
        }
    }
    
    configurations.create('jasperreports')
    configurations.jasperreports {
     transitive = true
    }
    
    dependencies {
        jasperreports fileTree(dir: 'libs',include: '*.jar')
    }
    
    task compileJasperJava {
        def jasperSourceDir = file('customjrxml/src/main/jasperreports')
        def jasperTargetDir = file('customjrxml/build/classes/main/jasperreports')
        ant {
            taskdef(name: 'jrc', classname: 'net.sf.jasperreports.ant.JRAntCompileTask', classpath: configurations.jasperreports.asPath)
            jasperTargetDir.mkdirs()
            jrc(srcdir: jasperSourceDir, destdir:jasperTargetDir) {
                include(name:'**/*.jrxml')
                **classpath {
                    pathElement(path: configurations.jasperreports.asPath)
                }**
            }
        }
    }
    
    classes.dependsOn compileJasperJava
    

    参考文章:http://gradle.1045684.n5.nabble.com/Classpath-issue-with-jasperreports-taskdef-td3275141.html

    【讨论】:

      猜你喜欢
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      相关资源
      最近更新 更多