我一直在這個問題上一整天都陷入困境,我希望有人能幫助我讓我的程序運行。Gradle提供的JAR依賴不能按預期工作
我建立的Android註釋處理器,它目前有兩個模塊: 「MyModule的」 和 「MyModule的編譯器」
mymodule中,編譯器依賴mymodule中:
dependencies {
compile project(':mymodule')
...
}
MyModule中使用Netflix的Android版「提供的」插件:
apply plugin: 'nebula.provided-base'
dependencies {
provided 'com.google.android:android:4.1.1.4'
}
這其實完美的作品,但是當我跑我的編譯器的單元測試套件,大量的試驗失敗,因爲A指定的ndroid依賴是v4.1.1.4,我實際上需要v6.0。 v6.0在Maven上不可用(並且看起來從未如此,因爲Google自2012年以來未更新它)。
我發現了Android SDK提供了對Android的每個版本,這是整個SDK「掐滅」一個「單元測試」 JAR版本。我假設Maven的版本也被刪除(?)。我可以輕鬆地抓住該JAR並將其放入libs /下的項目中。現在
當我更新的gradle MyModule的文件:
dependencies {
provided files('libs/android.jar')
}
我的項目仍編譯正確,我可以看到V23的文件!然而,當我跑我的單元測試,我看到以下錯誤:
!!! JUnit version 3.8 or later expected:
java.lang.RuntimeException: Stub!
at junit.runner.BaseTestRunner.<init>(BaseTestRunner.java:5)
at junit.textui.TestRunner.<init>(TestRunner.java:54)
at junit.textui.TestRunner.<init>(TestRunner.java:48)
at junit.textui.TestRunner.<init>(TestRunner.java:41)
at com.intellij.rt.execution.junit.JUnitStarter.junitVersionChecks(JUnitStarter.java:205)
at com.intellij.rt.execution.junit.JUnitStarter.canWorkWithJUnitVersion(JUnitStarter.java:188)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
它不應該的問題是,Android的JAR被掐滅,因爲我從來沒有執行Android的代碼,我只需要進口。
有沒有人對我所看到的以及我如何解決這個問題有任何想法?
編輯1:更多信息:
如果我刪除從MyModule的Android的完全依賴,而是把下列mymodule中,compiler.gradle:
dependencies {
testCompile files('libs/android.jar')
...
}
我所有的測試將通過。這顯然不是一個修復,因爲'mymodule'確實需要Android依賴。
編輯2:
否則相同的試驗作爲EDIT 1,但使用Netflix的提供範圍,而不是testCompile也可以。如果我在兩個項目中使用提供的範圍,我會得到相同的存根!例外。
你確定你想寫「Netflix的」? – F43nd1r
'nebula.provided-base'是一個netflix插件,它可能與此有關。我真的不知道問題是什麼。 –
gradle在本地支持「提供」。我不知道你爲什麼使用插件。我詢問netflix是因爲我想到了poular video provider並且不知道這個插件。 – F43nd1r