如果更改依赖顺序,Android Gradle Build无法正常工作

时间:2016-09-16 20:26:45

标签: android android-gradle build.gradle retrofit2 annotation-processing

好吧,这可能是我曾经问过的最愚蠢的问题,但我真的需要知道为什么会这样。

我为android构建了自己的注释处理器。现在,这些是我对build.gradle的依赖:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'

// Retrofit
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'

// Butterknife dependencies
apt 'com.jakewharton:butterknife-compiler:8.0.1'
compile 'com.jakewharton:butterknife:8.0.1'

// Support libraries
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.android.support:recyclerview-v7:23.4.0'

// My annotation processor
apt 'co.aurasphere.revolver:revolver-compiler:0.0.1-SNAPSHOT'
compile 'co.aurasphere.revolver:revolver:0.0.1'
}

这个版本运行正常。调用注释处理器,我可以看到它正在运行。

现在,如果我改为:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'

// Butterknife dependencies
apt 'com.jakewharton:butterknife-compiler:8.0.1'
compile 'com.jakewharton:butterknife:8.0.1'

// Support libraries
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.android.support:recyclerview-v7:23.4.0'

// Retrofit
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'

// My annotation processor
apt 'co.aurasphere.revolver:revolver-compiler:0.0.1-SNAPSHOT'
compile 'co.aurasphere.revolver:revolver:0.0.1'
}

我刚刚在我的注释处理器之前移动了Retrofit依赖项。突然间它在建造期间停止显示任何生命迹象。只有当我的注释处理器是最后一个依赖项并且Retrofit就在它之前时才会发生这种情况。如果我的注释处理器是第二个(仍然在Retrofit之后)它可以工作。如果它是最后一个依赖项并且Retrofit不是它之前的依赖项,它就可以工作。

我真的很困惑。我能理解问题是否与Butterknife有关,因为它是另一个注释处理器,但这看起来很奇怪。

显然,这不是一个真正的问题,但我真的很想知道为什么会这样。

谢谢。

0 个答案:

没有答案