为什么Grails采用jar依赖项而不是现有的maven项目依赖项?

时间:2011-02-24 15:17:29

标签: grails

我正在使用IntelliJ IDEA 10.0.2(支持groovy / grails),maven 2.2.1和grails 1.3.6。

我们有一个大型的maven项目,这取决于许多其他的maven项目。假设工作空间结构如下所示:

  • backend-project(Java项目,没有进一步的项目依赖性)
  • 输出项目(Java项目,没有进一步的项目依赖性)
  • frontend-project(Grails项目,它依赖于后端和输出)

这意味着,在我的前端项目的pom.xml中,我定义了2个项目依赖项:

e.g。

<dependency>
   <groupId>com.company.project</groupId>
   <artifactId>backend-project</artifactId>
   <version>${project.version}</version>
</dependency>

<dependency>
   <groupId>com.company.project</groupId>
   <artifactId>output-project</artifactId>
   <version>${project.version}</version>
</dependency>

假设我在输出或后端项目中更改了一些Java Source。当我 现在运行grails应用程序,然后它不会考虑更改。我必须在本地发布更改的工件,然后在运行应用程序之前由grails项目再次解析它以使其生效。 这告诉我grails项目只取决于maven存储库中的项目依赖项jar,并不关心工作区内任何现有的项目依赖“源”。

是否必须如此复杂,如果是这样,为什么?

请注意,如果我的前端项目是一个spring web项目,那么更改将在IDEA中看到,tomcat甚至会动态重新加载更改。

请注意,当IDEA识别Maven化Grails项目,它不会与运行Grails项目:“大盘运行的应用程序”了,但有一个更复杂的版本:“MVN的Grails:EXEC -d命令=运行的应用程序” 。不知道这是否有任何相关性。

谢谢! 斯拉什先生

1 个答案:

答案 0 :(得分:0)

Maven总是从存储库中获取jar文件(本地然后远程等等,具体取决于你的pom.xml配置)。

考虑一下:您的主项目如何知道后端项目或输出项目文件的位置?

如果您想要直接依赖,那么将其从pom.xml中删除并修改项目构建路径以直接将项目的输出添加到主项目中。在Eclipse中打开主项目的属性页面=&gt; build path =&gt; projects =&gt;加。