私のbuild.gradleは現在:
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' }
}
}
ただし、これらのコンパイル済みクラスを直接jarにパッケージ化するのではなく、最初に次のタスクを実行してインストルメント化したいと思います。
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()
}
これらのクラスをインストルメント化した後でのみ、それらをJARファイルにパッケージ化する必要があります。パッケージングの前にこのインストルメンテーションを実行できる方法はありますか?
どうもありがとう!!!
ついにそれを行う方法を見つけました!
task instrument(type: JavaExec) {
//your instrumentation task steps here
}
compileJava.doLast {
tasks.instrument.execute()
}
jar {
//whatever jar actions you need to do
}
これにより、他の人がこの問題に何日も立ち往生するのを防ぐことができることを願っています:)