Gradle应用程序插件:如何使用-javaagent选项运行JVM应用程序?

5

我在gradle(v1.10)中使用应用程序插件来打包和运行我的应用程序。

现在,我需要使用方面(aspectj),但我不想使用aspectj-compiler(ajc)。

是否可以调整gradle应用程序运行脚本,以便我的应用程序可以使用加载时编织?类似于提供jvm选项:

-javaagent:_path_to_aspectj_weaver.jar

1个回答

6

是的,这样做:

project(':whatever') {
    apply plugin: 'application'

    mainClassName = 'some.Main'
    repositories { mavenCentral() } 

    dependencies {
        // substitute needed version of aspectj
        runtime "org.aspectj:aspectjweaver:$aspectj" 
    }

    applicationDefaultJvmArgs = [
        "-javaagent:\$APP_HOME/lib/aspectjweaver-${aspectj}.jar"
    ]

    // $ symbol gets escaped in script anyway:( so we need to replace it.
    startScripts {
        doLast {
            unixScript.text = unixScript.text.replace('\\$APP_HOME', '\$APP_HOME') 
            // do something like this for Windows scripts also
        }
    }
}

这适用于distTar任务,但不知何故也在运行任务中执行,这会导致$APP_HOME无法解析并阻止运行./gradlew run。 - Christian Vielma
有一个Gradle插件可以解决这个问题:https://plugins.gradle.org/plugin/com.zoltu.application-agent - Matt F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接