如何从Gradle运行DataNucleus Enhancer?

Adr*_*Ber 8 datanucleus gradle

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

Adr*_*Ber 13

我搜索并发现没有用于从Gradle运行DataNucleus Enhancer的插件.但是有一种方法可以通过使用DataNucleus Enhancer Ant任务来实现.

我添加了以下内容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)
Run Code Online (Sandbox Code Playgroud)

entityFiles您配置JPA实体注释类的位置.

遗憾的是,您无法看到增强器输出,因为此任务正在使用Ant日志记录.除非你正在使用gradle -i-d选项.

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