1

我有一个包含 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 GMaven 插件。(Eclipse Groovy 编译器在同样的事情上失败了。)

我的猜测是 Groovy 编译器处理注释,并且看到${...},它创建了一个GroovyString而不是String. 然后类型检查失败。

我怎样才能解决这个问题?我可以使用不同的语法,例如 %{...} 但我不想这样做。

4

1 回答 1

2

您是否尝试过单引号以使 Groovy 不对其进行模板化?

@ConfigPartDescriptor( name = 'Mail Service ${jndiName}' )
于 2013-06-14T08:09:37.950 回答