最近由于不清楚maven(2.2.x)增量编译的机制,导致应用出现了一个当时觉得非常诡异的一个问题。先描述一下问题。
背景是应用A有一个公用的base包,版本为1.6.6-SNAPSHOT,应用B依赖于这个公用的base包。我在base包中修改了一个字符串变量的值,该变量是一个缓存的key(如下面代码的Constants类,中的CACHE_KEY)。然后使用mvn deploy 命令把base包上传到中心库中。出现的问题是应用B打包部署,应用上线后,使用后台功能删除"cache.key.new"对应的缓存值,提示删除成功。但是前台展示的还是老的值(前台展示取的数据是从缓存取出的,简化代码后,参考下面的CategoryManager的showCategory()方法,根据key在缓存中取出值,然后前台展示)。
publicInterface Constants{public interfaceCache{
String CACHE_KEY= “cache.key.new”;//旧值为"cache.key"
}
}
publicClass CategoryManager{private static Map keyMaps = new HashMap();static{
keyMaps.put(1, Constants. Cache. CACHE_KEY);//把缓存的key存到map中
.........
}publicObject showCategory(){return cacheManager.get(keyMaps.get(1));//在缓存中获取数据
}
}
一开始怀疑是包没有成功deploy到中心库中,然后在中心库中