2013-12-18 32 views
9

Zastanawiam się, czy można ustawić właściwość systemu dla aplikacji Java, używając Gradle?Jak ustawić właściwość systemu za pomocą gradle?

Próbowałem za pomocą pliku gradle.properties i definiowanie właściwości jako

systemProp.name = my name 

ale wtedy, kiedy staramy się tę właściwość z aplikacji Java przy użyciu

System.getProperty("name") 

że nieruchomość nie została znaleziona.

build.gradle i gradle.properties znajdują się w folderze głównym projektu.

To właśnie moja build.gradle wygląda następująco:

apply plugin: 'war' 
apply plugin: 'appengine' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.google.appengine:gradle-appengine-plugin:1.8.6' 
    } 
} 

appengine { 
    httpPort = 8081 
} 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile group: 'com.google.inject', name: 'guice', version: '3.0' 
    compile group: 'com.google.inject.extensions', name: 'guice-servlet', version: '3.0' 
    compile group: 'javax.servlet', name: 'servlet-api', version: '2.5' 
    compile group: 'org.hibernate', name: 'hibernate-entitymanager', version: '4.2.0.Final' 
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.27' 
    compile 'com.google.protobuf:protobuf-java:2.5.0' 
    compile 'com.google.appengine:appengine-api-1.0-sdk:1.8.6' 
    compile 'com.google.template:soy:2012-12-21' 
    compile 'org.json:json:20090211' 
} 

A to, co moi build.properties wyglądać następująco:

systemProp.firstName=Marko 
systemProp.lastName=Vuksanovic 

Jest to część aplikacji AppEngine i go uruchomić za pomocą następującej komendy:

+0

Jak działa kod wygląd jak budować, który uruchamia aplikację Java? Opublikuj swój "build.gradle". –

Odpowiedz

3

Właściwość systemu ustawiona w gradle.properties będzie być dostępne tylko w JVM, w którym działa Gradle.

Od gradle-appengine-plugin dokumentacji:

appengineRun: Rozpoczyna lokalny serwer deweloperski uruchomiony kod projektu .

jvmFlags: Flagi JVM do przekazania na lokalny serwer programistyczny.

Jeśli potrzebujesz, aby właściwości systemu były dostępne w silniku aplikacji, który jest oddzielną maszyną JVM, powinieneś użyć właściwości jvmFlags.

Jawnie:

appengine { 
    jvmFlags = ['-DfirstName=Marko', '-DlastName=Vuksanovic'] 
} 

Z gradle.properties:

appengine { 
    jvmFlags = ['-DfirstName=$firstName', '-DlastName=$lastName'] 
} 
5

Właśnie natknąłem się na ten temat do użytku z Gradle wtyczki aplikacji. Dodaj do zadania uruchamiania. Działa świetnie:

run { 
    systemProperties['MYPROP'] = '/my/prop/value' 
} 
+2

To nie działa dla mnie, uzyskanie '> Nie można znaleźć metody run() dla argumentów [build_3q2qbgis9k2n97muogsnwks4i $ _run_closure5 @ 3172da27]' – gromit190

4

To jak to zrobić, ustawiając Rekwizyty ramach Selenide Test:

test { 
    systemProperty "browser", "chrome" 
    systemProperty "webdriver.chrome.driver", "$projectDir/drivers/chromedriver" 
} 
Powiązane problemy