2014-01-07 4 views
3

Я использую плагин приложения в gradle (v1.10) для упаковки и запуска приложений.Gradle Application Plugin: Как запустить приложение jvm с параметрами -javaagent?

Итак, теперь мне нужно использовать аспекты (aspectj), и я не хочу использовать aspectj-compiler (ajc).

Можно ли настроить скрипты запуска приложений градимента, чтобы мое приложение можно было запускать с загрузкой во времени? Нечто подобное предоставление вариантов Jvm:

-javaagent: _path_to_aspectj_weaver.jar

ответ

1

Да, это делается так:

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 
     } 
    } 
} 
+0

Это работает для задачи distTar, но каким-то образом также выполняется в задача запуска, из-за которой \ $ APP_HOME отказывается разрешать и предотвращает запуск ./gradlew run –