2012-01-18 5 views
5

Projemdeki yapı tanımında Android kapsamındaki SettingKey useProguard öğesi true olarak ayarlandı. Bu varsayılan olarak istediğim şey. Ancak, belirli bir görevi yürüttüğümde, useProguard'ın false olmasını istiyorum. Android kapsamındaki her şey sbt-android-plugin'den geliyor.SBT'yi kullanarak, çalışma zamanında farklı bir Ayar [T] değeri olan bir görevi nasıl yürütürsünüz?

Bu sorunu en iyi nasıl çözeceğinden emin değilim. Okuduğumdan, bir komutun işi yapması gibi görünüyor, çünkü mevcut oturumun gördüklerinden farklı bir durumla bir görevi yürütebiliyor. Böyle bir komut şöyle oluşturmaya çalıştık:

def buildWithoutProguard = Command.command("build-without-proguard") { state => 
    val extracted = Project.extract(state) 
    import extracted._ 

    val transformed = session.mergeSettings :+ (useProguard in Android := false) 
    val newStructure = Load.reapply(transformed, structure) 
    val newState = Project.setProject(session, newStructure, state) 
    Project.evaluateTask(buildAndRun, newState) 
    state 
} 

benim proje ayarlarına komutu ekleme ve istenilen şekilde buildAndRun görevi yürütür 'build-olmadan-ProGuard' komutunu çalıştırıyorum. Bununla birlikte, useProguard beklediğim gibi yanlış yerine hala doğrudur. Birincisi, bu yaklaşım benim için çok ağır hissettiriyor. Sbt-android-plugin'i değiştirmenin bir seçenek olmadığını varsayarsak, o zaman bu sorunu nasıl çözebilirim?

İkincisi, neden bu yaklaşım neden çalışmaz?

+0

olası kopyası [SBT komutunun içinde ayar nasıl değiştirilir?] (Http://stackoverflow.com/questions/14262798/how-to-change-setting-inside-sbt-command) –

cevap

2

Sorunuzdan anladığım kadarıyla, ayarın ne olduğuna bağlı olarak bağımlılığı için farklı olmasını istiyorsunuz. Bu bir anlam ifade etmiyor - bağımlılık ya tatmin oluyor ya da öyle değil ve buna bağlı olan şey denkleme gelmiyor.

Çözümünüz benim için tatmin edici görünüyor. Bir alternatif, aynı kaynağa işaret eden, ancak farklı koruma ayarları ve farklı hedefe sahip olan iki projesini yapıyordu, böylece biri diğeriyle progard olmaksızın inşa edilecekti ve her ikisi de durumlarını koruyacaktı. O zaman ne istersen yaparsın, projeleri değiştirirsin.

+0

Merhaba Daniel, teşekkürler Cevap. Ayrı bir proje gerçekten gitmek için bir yol gibi görünüyor. Komutun neden gerektiği gibi çalıştığını hala merak ediyorum. – James

+0

Görev ekseni "bağımlılığa bağlı olarak bağımlılığı değiştir" gibi bir şey yapmıyor mu? Bir ayara bağlı bir göreviniz varsa, hangi görevin çalışmakta olduğuna bağlı olarak ayarın farklı değerleri olamaz mı? –

+0

@JamesMoore Hayır, öyle değil ve hayır olamaz. –

İlgili konular