关于CI的Dagger 2编译时错误

时间:2015-09-17 17:19:24

标签: jenkins continuous-integration dagger-2

我最近一直在使用Dagger 2,只是在我的android项目中使用范围做了一些工作,为活动增加了范围。虽然一切都在我自己的机器上运行,构建和测试。我在Jenkins CI上遇到编译错误。

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':Adverts:compile***DebugJava'
.java.lang.ClassCastException: java.lang.String cannot be cast to javax.lang.model.type.TypeMirror

这很奇怪,因为直到现在,使用Dagger 2构建的工作正常,只需生成较少的代码。当我导航到生成的源时,一些但不是所有代码都生成了。看起来它正在沿途的某个地方扯下来。 CI和我的机器都使用相同版本的JDK。

有没有人遇到CI& amp;匕首2之前?

2 个答案:

答案 0 :(得分:2)

对于将来遇到此错误的人,很可能是因为您删除了一个类,或者您的模块中引用了一个不存在的类。

当我有这样的代码编译时,我有完全相同的错误:

@Module(includes = {
        AModuleThatDoesntExist.class
})
public class YourModule {
}

所以我所说的是:如果你遇到这个错误,请检查你的Dagger模块和bootstrapper代码,那里可能有一些无效的代码。

至于为什么它在您的机器上运行而不在CI服务器上运行:我不知道。我猜这是因为一些缓存问题,你删除的.java文件的.class文件仍然存在于你的本地文件系统上,所以Dapper可以找到它,但它在CI服务器上不存在。如果您仍然可以重现该问题,也许您可​​以尝试运行“重建”并查看错误是否也在本地发生。

答案 1 :(得分:0)

无论发生什么,Dagger 2的注释处理器都不应该抛出异常,所以假设它来自Dagger 2注释处理器,如果你可以创建一个可重现的例子,最好是简单的之一。

正如其他人建议做一个干净的构建(自己删除这些类以确保它们都已消失)并检查您的机器和CI之间的差异。