2016-01-06 21 views
8

this question'dan hareketle, iki farklı şekilde bir sbt projesini, yani farklı scalacOptions ile derleyebilmeyi istiyorum. Yinelenen soruların cevabı, başka bir yapılandırmanın kullanılmasının neden özel kaynaklara ihtiyaç duymayacağınız konusunda neden yardımcı olmadığını açıklar.Ayrı bir yapılandırma, ancak farklı scalacOptions olmadan ayrı bir derleme görevi nasıl oluşturulur?

So. Ama ben özel kaynakları istemiyorum. Tam olarak aynı kaynakları derlemek ama farklı derleyici ayarları ile. Bu yüzden çözümün, derleme yapmak yerine yeni bir görev tanımlamak gerektiğini düşünün.

val myCompile = taskKey[???]("Compiles my way") 

scalacOptions in MyCompile ++= Seq("-elide-below", "1") 

gibi ben ayrı target dizinde varsayılan compile görevi çoğaltmak asgari çaba istiyor sonra olur ve bir myCompile:assembly içine daha olabilir o yem ...? Bunu nasıl yaparım?

cevap

2

tl; drcompile dönüş türünü öğrenmek için inspect kullanın. Bununla

> inspect compile 
[info] Task: sbt.inc.Analysis 
... 

, sen build.sbt aşağıdaki gibi olmalıdır:

val myCompile = taskKey[sbt.inc.Analysis]("Compiles my way") 
myCompile <<= compile in Compile 

scalacOptions in myCompile ++= Seq("-elide-below", "1") 
+0

Bu "scalacOptions" öğesini seçmez –

+0

ScalacOptions'ın kapsamı nedir? Cevabımda, “Compacent'teki scalacOptions” ifadesini kullanıyorum. Diğer kapsamları 'scalacOptions' eklemek ister misiniz? –

+0

Bilmiyorum. Ama "Compopile" deki scalacOptions kesinlikle "myCompile" tarafından alınmadı, bunu doğruladım ('-no-way' 'seçeneğini bir seçenek olarak eklemeyi ve' sbt clean myCompile 'komutunu çalıştırmayı denedim) –

0

Hala ayrı yapılandırma kullanabilirsiniz ve

sourceDirectory in MyCompile := (sourceDirectory in Compile).value 

sbt compile tasks with different options olduğu gibi src/main/* kaynakları kullanmayı ekleyebilir.

İlgili konular