Ant 使用Gradle时如何执行OpenJPA增强?

Ant 使用Gradle时如何执行OpenJPA增强?,ant,gradle,openjpa,Ant,Gradle,Openjpa,我尝试过这个gradle插件,但它抱怨说它找不到特定的库,并且不支持providedCompile,这使得我无论如何都无法使用它 我还尝试调用ANT任务,我最新的尝试如下: Caused by: C:\Work_Java\workspace\PaxHoldRelease\jpa_enhance.xml:5: taskdef class org.apache.openjpa.ant.PCEnhancerTask cannot be found build.gralde apply plugin:

我尝试过这个gradle插件,但它抱怨说它找不到特定的库,并且不支持providedCompile,这使得我无论如何都无法使用它

我还尝试调用ANT任务,我最新的尝试如下:

Caused by: C:\Work_Java\workspace\PaxHoldRelease\jpa_enhance.xml:5: taskdef class org.apache.openjpa.ant.PCEnhancerTask cannot be found
build.gralde

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'ear'

// Java compilier compliance level
sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
    mavenLocal()
    mavenCentral()
}    

ant.importBuild 'jpa_enhance.xml'
war.dependsOn enhance

dependencies {
    // Ensure ear plugin gets war file
    deploy files(war)

    providedCompile 'javax.servlet:javax.servlet-api:3.0.1'
    compile 'javax.websocket:javax.websocket-api:1.1'  

    compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.16'
    compile 'com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.5.1'
    compile 'org.glassfish:javax.json:1.0.4'

    providedCompile 'org.apache.openjpa:openjpa:2.2.2'

    providedCompile 'com.sybase:jconn3:6.05'
    providedCompile files('libs/sqljdbc4-3.0.jar')
} 
jpa_enhance.xml

这是一长串尝试中的最新版本,可能完全是垃圾,因为我只是在一阵绝望中撕掉了所有东西:-(


试试这个Andrew-I将这个gradle松散地建立在S.O.上由另一个成员(用于DataNucleus增强器)提供的尼斯增强器脚本的基础上

请注意,您需要修改实体文件(include/exclude)以指向特定的“未来/未来”增强Java源文件。此外,此方法假定类路径派生自父build.gradle


task openJPAEnhance {
    description "Enhance JPA model classes using OpenJPA Enhancer"
    dependsOn compileJava

    doLast {
        // define the entity classes
        def entityFiles = fileTree(sourceSets.main.output.classesDir).matching {
            include 'org/foo/mypkg/entity/*.class'
            exclude 'org/foo/mypkg/entity/DoNotEnhance.class'
        }

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

        // define Ant task for Enhancer
        ant.taskdef(
            name : 'openjpac',
            classpath : sourceSets.main.runtimeClasspath.asPath,
            classname : 'org.apache.openjpa.ant.PCEnhancerTask'
        )

        // Run the OpenJPA Enhancer as an Ant task
        //   - see OpenJPA 'PCEnhancerTask' for supported arguments
        //   - this invocation of the enhancer adds support for a default-ctor
        //   - as well as ensuring JPA property use is valid.
        ant.openjpac(
            classpath: sourceSets.main.runtimeClasspath.asPath,
            addDefaultConstructor: true,
            enforcePropertyRestrictions: true) {
            entityFiles.addToAntBuilder(ant, 'fileset', FileCollection.AntType.FileSet)
        }
    }
}

我希望这能有所帮助,而编写第一个gradle脚本的人并不介意我们将它(从DataNucleus)重新设计为OpenJPA


task openJPAEnhance {
    description "Enhance JPA model classes using OpenJPA Enhancer"
    dependsOn compileJava

    doLast {
        // define the entity classes
        def entityFiles = fileTree(sourceSets.main.output.classesDir).matching {
            include 'org/foo/mypkg/entity/*.class'
            exclude 'org/foo/mypkg/entity/DoNotEnhance.class'
        }

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

        // define Ant task for Enhancer
        ant.taskdef(
            name : 'openjpac',
            classpath : sourceSets.main.runtimeClasspath.asPath,
            classname : 'org.apache.openjpa.ant.PCEnhancerTask'
        )

        // Run the OpenJPA Enhancer as an Ant task
        //   - see OpenJPA 'PCEnhancerTask' for supported arguments
        //   - this invocation of the enhancer adds support for a default-ctor
        //   - as well as ensuring JPA property use is valid.
        ant.openjpac(
            classpath: sourceSets.main.runtimeClasspath.asPath,
            addDefaultConstructor: true,
            enforcePropertyRestrictions: true) {
            entityFiles.addToAntBuilder(ant, 'fileset', FileCollection.AntType.FileSet)
        }
    }
}