2013-12-18 37 views
9

Tôi đã tự hỏi liệu có thể thiết lập thuộc tính hệ thống, cho một ứng dụng Java, sử dụng Gradle?Làm thế nào để thiết lập thuộc tính hệ thống bằng cách sử dụng gradle?

tôi đã cố gắng sử dụng gradle.properties tập tin và xác định một tài sản như

systemProp.name = my name 

nhưng sau đó khi tôi cố gắng để có được tài sản đó từ một ứng dụng Java sử dụng

System.getProperty("name") 

rằng bất động sản là không tìm thấy.

build.gradle và gradle.properties nằm trong thư mục gốc của dự án.

Đây là những gì build.gradle của tôi trông giống như:

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' 
} 

Và đây là những gì build.properties của tôi trông giống như:

systemProp.firstName=Marko 
systemProp.lastName=Vuksanovic 

Đây là một phần của một ứng dụng AppEngine và tôi chạy nó sử dụng lệnh sau:

gradle appengineRun 
+0

Làm thế nào để xây dựng của bạn đang nhìn như chạy các ứng dụng Java? Vui lòng đăng 'build.gradle' của bạn. –

Trả lời

3

Thuộc tính hệ thống được đặt trong gradle.properties sẽ chỉ có sẵn trong JVM nơi Gradle đang chạy.

Từ gradle-appengine-plugin tài liệu:

appengineRun: Bắt đầu một máy chủ phát triển địa phương chạy mã dự án của bạn.

jvmFlags: Cờ JVM để chuyển sang máy chủ phát triển cục bộ.

Nếu bạn cần các thuộc tính hệ thống của bạn có sẵn trong công cụ ứng dụng, là JVM riêng biệt, bạn nên sử dụng thuộc tính jvmFlags.

Rõ ràng:

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

Với gradle.properties:

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

Tôi chỉ cần stumbled trên này để sử dụng với các plugin ứng dụng gradle. Thêm vào nhiệm vụ chạy. Các công trình lớn:

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

Điều này không làm việc cho tôi, nhận được '> Không thể tìm thấy phương thức run() cho các đối số [build_3q2qbgis9k2n97muogsnwks4i $ _run_closure5 @ 3172da27]' – gromit190

4

Đây là cách tôi làm điều đó, thiết lập đạo cụ cho khung Selenide kiểm tra:

test { 
    systemProperty "browser", "chrome" 
    systemProperty "webdriver.chrome.driver", "$projectDir/drivers/chromedriver" 
} 
Các vấn đề liên quan