我有一个Java和Groovy文件的项目,想把它们编译成.class.
我的Groovy类使用Java类。其中一个Java类包含注释
@ConfigPartDescriptor(
name = "Mail Service ${jndiName}"
)
@XmlRootElement(name = "mbean")
@XmlAccessorType(XmlAccessType.NONE)
public final class MailServiceBean extends MBeanJaxbBase<MailServiceBean> implements IConfigFragment, Origin.Wise {
对于Java来说是可以的,但是Groovy,尽管它没有编译文件,抱怨:
Failed to execute goal org.codehaus.gmaven:gmaven-plugin:1.5:compile (compile-groovy-classes) on project AsMigrator: startup failed:
file:/home/ondra/work/AS/Migration/git-repo/src/main/java/org/jboss/loom/migrators/_groovy/TestJaxbBean.groovy: 20: Expected 'Mail Service $jndiName' to be an inline constant of type java.lang.String in @org.jboss.loom.spi.ann.ConfigPartDescriptor
@ line 20, column 12.
name = "Mail Service ${jndiName}"
使用Maven插件。(Eclipse Groovy编译器在同样的事情上失败。)
我猜是Groovy编译器处理注释,看到${...}
,它创建了一个GroovyString
而不是String
。然后类型检查失败。
我怎么能解决这个问题?我可以使用不同的语法,例如%{…但是我不喜欢。
你试过单引号吗?
@ConfigPartDescriptor( name = 'Mail Service ${jndiName}' )