9

Tôi đang cố gắng để đạt được một kịch bản đơn giản trong dự án khởi động mùa xuân của tôi: bao gồm/loại trừ các phụ thuộc và đóng gói chiến tranh hoặc jar tùy thuộc vào môi trường.Cấu hình Maven tương đương với Gradle

Vì vậy, ví dụ, cho môi trường dev bao gồm DevTools và gói jar, cho prod gói chiến tranh, vv

Tôi biết nó không phải là cấu hình XML dựa nữa và tôi về cơ bản có thể viết câu lệnh if trong build.gradle của tôi, nhưng có cách nào được khuyến nghị để đạt được điều này?

Tôi có thể khai báo một số phụ thuộc phổ biến và tham chiếu chúng trong một tệp duy nhất thay vì tạo nhiều tệp xây dựng không?

Có cách nào thực hành tốt nhất thay đổi cấu hình xây dựng dựa trên môi trường mục tiêu xây dựng không?

Trả lời

6
ext { 
    devDependencies = ['org.foo:dep1:1.0', 'org.foo:dep2:1.0'] 
    prodDependencies = ['org.foo:dep3:1.0', 'org.foo:dep4:1.0'] 
    isProd = System.properties['env'] == 'prod' 
    isDev = System.properties['env'] == 'dev' 
} 

apply plugin: 'java' 

dependencies { 
    compile 'org.foo:common:1.0' 
    if (isProd) { 
     compile prodDependencies 
    } 
    if (isDev) { 
     compile devDependencies 
    } 
} 

if (isDev) tasks.withType(War).all { it.enabled = false } 
0

phiên bản của tôi (lấy cảm hứng từ Lance Java's answer):

apply plugin: 'war' 

ext { 
    devDependencies = { 
    compile 'org.foo:dep1:1.0', { 
     exclude module: 'submodule' 
    } 
    runtime 'org.foo:dep2:1.0' 
    } 

    prodDependencies = { 
    compile 'org.foo:dep1:1.1' 
    } 

    commonDependencies = { 
    compileOnly 'javax.servlet:javax.servlet-api:3.0.1' 
    } 

    env = project.hasProperty('env') ? project.env : 'dev' 
} 

dependencies project."${env}Dependencies" 
dependencies project.commonDependencies 

if (env == 'dev') { 
    war.enabled = false 
} 
Các vấn đề liên quan