It's possible to dodge text. There was a bug in 0.9.0 where text would't be properly dodged, though. I think it's fixed in 0.9.1.
dat <- data.frame(class = c("a","a","b","b"),
val = round(runif(4),2),
g = c("group1", "group2"))
dat$text_labels <- as.character(sprintf("%2.2f", df$val))
ggplot(data = dat, aes(x=class, y=val, colour=g)) +
geom_bar(position=position_dodge(width=0.9)) +
geom_text(aes(label = text_labels, y = val + 0.1), angle = 45,
position = position_dodge(width=0.9))
# With a group= variable, instead of colour=
ggplot(data = dat, aes(x=class, y=val)) +
geom_bar(aes(colour=g), position=position_dodge(width=0.9)) +
geom_text(aes(label = text_labels, y = val + 0.1, group = g),
angle = 45, position = position_dodge(width=0.9))