我正在使用IntelliJ IDEA 10.0.2(支持groovy / grails),maven 2.2.1和grails 1.3.6。
我们有一个大型的Maven项目,它依赖于许多其他的Maven项目。假设工作空间结构如下:
这意味着,在我的前端项目的pom.xml中,我定义了2个项目依赖项:
例如
<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应用程序,则不会考虑更改。我必须在本地发布更改的 Artifact ,然后在运行该应用程序之前由grails项目再次对其进行解析,以使其生效。
这告诉我grails项目仅依赖于Maven存储库中的项目依赖项jar,而不关心工作空间中任何现有的项目依赖项“源”。
一定要那么复杂吗?如果是这样,为什么呢?
请注意,如果我的前端项目是一个Spring Web项目,那么更改将在IDEA中看到,并且tomcat甚至会动态地重新加载更改。
请注意,当IDEA识别出经过改造的grails项目时,它将不再使用以下命令运行grails项目:“grail run-app”,但使用以下更为复杂的版本:“mvn grails:exec -Dcommand = run-app”。不知道这是否有任何意义。
谢谢!
斜线先生
最佳答案
Maven总是从存储库(本地,然后是远程等,取决于pom.xml配置)中选择jar文件。
考虑一下:您的主项目将如何知道后端项目或输出项目文件的位置?
如果要直接依赖,则从pom.xml中删除它,并修改项目构建路径以将项目的输出直接添加到主项目中。在Eclipse中,打开主项目的属性页=>构建路径=>项目=>添加。
关于grails - 为什么Grails会采用jar依赖性而不是现有的maven项目依赖性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5106566/