這是我的場景,我使用Scala/SBT/android-sdk-plugin開發Android應用程序。在我的申請中,我打算使用ViewPagerIndicator。將自定義任務插入到SBT中的內置任務依賴項中
它已經發布到Maven倉庫,所以我可以通過使用SBT的配置文件輕鬆地在我的項目中引用它。
但問題是,它包括它在自己的源代碼樹,這將編譯該項目過程中解壓到target/apklibs/com.viewpagerindicator-library-2.4.1/libs/android-support-v4.jar
依賴android-support-v4.jar
。
這將導致android:proguard
崩潰,因爲SBT本身已經從依賴項導入了android-support-v4.jar。
我所做的是寫一個SBT任務可以刪除該文件,所以我build.sbt
現在看起來如下:
import android.Keys._
import android.Dependencies.{apklib,aar}
android.Plugin.androidBuild
version := "0.0.1"
scalaVersion := "2.10.4"
organization := "idv.brianhsu.maidroid.ui"
libraryDependencies += "com.viewpagerindicator" % "library" % "2.4.1"
platformTarget in Android := "android-19"
proguardScala in Android := true
lazy val cleanupDuplicateJar = taskKey[Unit]("Remove duplicate jar")
cleanupDuplicateJar := {
import java.io.File
println("Remove target/apklibs/com.viewpagerindicator-library-2.4.1/libs/android-support-v4.jar")
val file = new File("target/apklibs/com.viewpagerindicator-library-2.4.1/libs/android-support-v4.jar")
file.delete()
}
它工作得很好,但我不得不每次android:proguard
之前手動運行cleanupDuplicateJar
。
當我運行android:proguard
時,我怎麼能讓cleanupDuplicateJar
自動運行?更具體地說,在android:proguard
的所有內置依賴關係任務之後的時間點,如compile
,以及之前的android:progurad
自身。
或者我怎麼能聲明只使用android-sdk-plugins的內置設置忽略哪個jar?