Gradle: so fügen Sie eine benutzerdefinierte Aufgabe nach Erstellung, aber vor der Verpackung-Dateien in einem Jar?

Meine bauen.gradle ist derzeit:

project(':rss-middletier') {
    apply plugin: 'java'

    dependencies {
        compile project(':rss-core')
        compile 'asm:asm-all:3.2'
        compile 'com.sun.jersey:jersey-server:1.9.1'
        compile group: 'org.javalite', name: 'activejdbc', version: '1.4.9'
    }

    jar {
        from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {
            exclude "META-INF/*.SF"
            exclude "META-INF/*.DSA"
            exclude "META-INF/*.RSA"
        }
        manifest { attributes 'Main-Class': 
'com.netflix.recipes.rss.server.MiddleTierServer' }
    }
}

Sondern eher als eine Verpackung, diese kompilierten Klassen in eine jar direkt, ich möchte instrument Sie zuerst durch ausführen der folgenden Aufgabe:

task instrument(dependsOn: 'build', type: JavaExec) {
    main = 'org.javalite.instrumentation.Main'
    classpath = buildscript.configurations.classpath
    classpath += project(':rss-middletier').sourceSets.main.runtimeClasspath
    jvmArgs '-DoutputDirectory=' + project(':rss-middletier').sourceSets
        .main.output.classesDir.getPath()
}

Nur, nachdem ich instrumentierten diese Klassen werde ich dann in einem Paket in einer JAR-Datei. Gibt es eine Möglichkeit, so dass ich tun kann dieser Besetzung vor der Verpackung?

Vielen Dank!!!

  • hier ist ein Beispiel Gradle-Projekt: github.com/javalite/activejdbc-gradle. Wenn Sie ausführen: gradle clean build jar, wird es produzieren eine jar-Datei mit einer instrumentierten Klassen
  • Verwendung von Konfigurationen { jar } und dann jar.doFirst { dependsOn instrument }
  • vielen Dank für die Hilfe Jungs!
InformationsquelleAutor Hongyi Li | 2014-07-22
Schreibe einen Kommentar