我如何从Gradle运行DataNucleus增强器? [英] How can I run DataNucleus Enhancer from Gradle?

查看:101
本文介绍了我如何从Gradle运行DataNucleus增强器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有运行DataNucleus Enhancer的gradle插件?正如我从文档中看到的,您只能从Maven或Ant运行它: http://www.datanucleus。 org / products / datanucleus / jpa / enhancer.html

解决方案

我搜索并没有发现运行DataNucleus的插件Gradle增强器。但是有一种方法可以通过使用DataNucleus Enhancer Ant任务来完成此操作。



我在 build.gradle
$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ compileJava

doLast {
//定义实体类
def entityFiles = fileTree(sourceSets.main.output.classesDir).matching {
include'com / mycom /*.class','org / myorg / *。class'
}

println用DataNucleus增强下列文件
entityFiles.getFiles()。each {
println it
}

//定义DataNucleus Enhancer的Ant任务
ant.taskdef(
名称:'datanucleusenhancer',
classpath: sourceSets.main.runtimeClasspath.asPath,
classname:'org.datanucleus.enhancer.EnhancerTask'
//下面是DataNucleus增强器3.1.1
// classname:'org.datanucleus.enhancer.tools.EnhancerTask'


// run DataNucleus增强器作为Ant任务
ant.datanucleusenhancer(
classpath:sourceSets.main.runtimeClasspath.asPath,
verbose:true,
api:JPA){
entityFiles.addToAntBuilder(ant,'fileset',FileCollection.AntType.FileSet)
}
}
}

classes.dependsOn(datanucleusEnhance)

entityFiles 中,您可以在其中配置JPA实体注释类。



不幸的是,你看不到增强器输出,因为这个任务正在使用Ant记录。除非你用 -i -d 选项运行gradle。



使用:Java 8, org.eclipse.persistence:javax.persistence:2.1.0 , org.datanucleus:datanucleus-accessplatform -jpa-rdbms:4.1.1


Is there a gradle plugin for running DataNucleus Enhancer? As I can see from documentation you can run it only from Maven or Ant: http://www.datanucleus.org/products/datanucleus/jpa/enhancer.html

解决方案

I searched and found no plugin for running the DataNucleus Enhancer from Gradle. But there is a way of doing this by using the DataNucleus Enhancer Ant task.

I added the following in my build.gradle.

task datanucleusEnhance {
    description "Enhance JPA model classes using DataNucleus Enhancer"
    dependsOn compileJava

    doLast {    
        // define the entity classes
        def entityFiles = fileTree(sourceSets.main.output.classesDir).matching {
            include 'com/mycom/*.class', 'org/myorg/*.class'
        }

        println "Enhancing with DataNucleus the following files"
        entityFiles.getFiles().each {
            println it
        }

        // define Ant task for DataNucleus Enhancer
        ant.taskdef(
            name : 'datanucleusenhancer',
            classpath : sourceSets.main.runtimeClasspath.asPath,
            classname : 'org.datanucleus.enhancer.EnhancerTask'
            // the below is for DataNucleus Enhancer 3.1.1
            //classname : 'org.datanucleus.enhancer.tools.EnhancerTask'
        )

        // run the DataNucleus Enhancer as an Ant task
        ant.datanucleusenhancer(
            classpath: sourceSets.main.runtimeClasspath.asPath,
            verbose: true,
            api: "JPA") {
            entityFiles.addToAntBuilder(ant, 'fileset', FileCollection.AntType.FileSet)
        }
    }
}

classes.dependsOn(datanucleusEnhance)

In the entityFiles is where you configure your JPA entity annotated classes.

Unfortunately you cannot see the enhancer output, as this task is using Ant logging. Unless you're running gradle with -i or -d option.

Using: Java 8, org.eclipse.persistence:javax.persistence:2.1.0, org.datanucleus:datanucleus-accessplatform-jpa-rdbms:4.1.1.

这篇关于我如何从Gradle运行DataNucleus增强器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆