Java maven编译groovy

Java maven编译groovy,java,maven-2,groovy,dependencies,gmaven-plugin,Java,Maven 2,Groovy,Dependencies,Gmaven Plugin,我的一些groovy代码引用了我的java文件,但我也有不同的java文件引用相同的groovy代码。当尝试在maven中编译时,我需要在java之前或之后编译groovy,这不会真正起作用,因为groovy代码依赖于一些java文件,而不同的java文件依赖于groovy代码。有没有办法处理这种依赖关系?您可以将代码分层,让较低的层调用较高的层,但决不能反过来。例如,在Web应用程序中,可以有一个视图层、一个服务层和一个持久层。视图层调用服务层,服务层调用持久层,但持久层永远不会调用服务层或视

我的一些groovy代码引用了我的java文件,但我也有不同的java文件引用相同的groovy代码。当尝试在maven中编译时,我需要在java之前或之后编译groovy,这不会真正起作用,因为groovy代码依赖于一些java文件,而不同的java文件依赖于groovy代码。有没有办法处理这种依赖关系?

您可以将代码分层,让较低的层调用较高的层,但决不能反过来。例如,在Web应用程序中,可以有一个视图层、一个服务层和一个持久层。视图层调用服务层,服务层调用持久层,但持久层永远不会调用服务层或视图层。如果希望groovy/java代码存在于同一层中,那么请确保其中一个调用另一个,但它们不会同时调用另一个。底线是,您应该避免双向依赖。

是的,只需使用。因为它是一个联合编译器,所以它会自动管理java到groovy和groovy到java的依赖关系

简而言之,您需要:

  • 在您的
    pom.xml
    中包含
    gmaven插件
  • 将groovy类放在
    src/main/groovy
    src/test/groovy
  • 将gmaven插件绑定到相关的生命周期阶段

有关更多详细信息,请参阅。

您应该能够通过将插件添加到maven pom.xml来编译代码。它生成groovy代码的Java存根,以处理您正在处理的语言间引用类型。我经常使用它,而且效果很好。

没错,但双向依赖可能会导致不必要的复杂和不易维护的代码。在这个问题的背景下,我同意使用GMaven是正确的答案,但我仍然会重构代码以消除或至少减少双向关系。