我已经将一个Maven项目导入Eclipse,但我仍然不确定Maven和Eclipse是如何一起工作的。
例如,当我将源文件夹从一个模块复制并粘贴到另一个模块以尝试解决Can Google App Engine Modules share source code just like Maven Modules?时,Eclipse刚刚更改了我的.classpath文件:
当我复制/粘贴我需要在模块/项目中复制的源代码时,Eclipse将此添加到.classpath:
<classpathentry kind="src" path="/nbsocialmetrics-backend"/>
Eclipse虽然没有对我的POM.xml文件进行任何更改。 Eclipse似乎对它为我做的.classpath更改感到满意,我没有任何相关项目/模块的编译警告。但是我项目顶层的mvn clean install
抱怨很多遗漏的依赖项。
我是否正确假设命令行Maven命令(例如mvn clean install
)不会查看Eclipse .classpath文件?
Maven不仅仅依赖以下内容吗?
mvn
如果我理解这一点,为什么Eclipse允许我对我导入的Maven项目做出不正确的更改?实际上可以安全地进行哪些类型的Eclipse更改 - 换句话说,在我在命令行执行mvn clean install
时,我实际上会在Eclipse中进行哪些类型的更改?
作为另一个例子,我试图在我的一个模块中使用Eclipse的WindowBuilder编辑器来创建一些GWT(J2EE / Maven感觉&#39;模块&#39;不是GWT意义上的&## 39;模块&#39)。由于我希望确保我有正确版本的WindowsBuilder来解析Error "No GWT module found" for Maven project imported into Eclipse,我应该查看Eclipse插件设置还是Maven POM.xml设置?在这种情况下,Eclipse,对吗?
感谢您帮助我理解。
答案 0 :(得分:1)
你必须选择一种或另一种策略,Eclipse在大多数情况下不会写入你的POM文件,你应该只依赖你的POM文件,因为你的项目几乎是IDE Free,如果你选择了Maven来管理构建和依赖,使用它。
你是对的,mvn clean install
不会关心你的类路径文件。
我暂时没有使用Eclipse(我推荐你使用IntelliJ IDEA),但我认为解决问题的一种方法是在POM文件中添加依赖项,然后将这些更改添加到类路径中,而不是相反
答案 1 :(得分:1)
我是否正确假设命令行Maven命令(例如
mvn clean install
)不会查看Eclipse .classpath文件?
是的,Maven不使用此文件。此文件仅供Eclipse用于保存有关项目的信息,即源目录及其对应的类或输出目录以及类路径条目。
Maven依赖于您提到的资源:POM文件,存储库等
为什么Eclipse允许我对我导入的Maven项目进行不正确的更改?
即使项目是Maven项目,Eclipse仍允许用户以不符合标准Maven约定的方式更改项目的构建设置。例如,模块中的默认源位于src/main/java
下,但没有什么可以阻止您右键单击模块,并在构建路径设置中添加不符合此标准的源文件夹(不用说这个这不是一件好事。)
Eclipse中的Maven项目只是一个配置为使用Maven插件的项目,它使用Maven实现依赖管理(例如,它也可以同时是一个Groovy项目)。
我在Eclipse中在命令行执行
mvn clean install
时实际上会反映出哪些类型的更改?
就Maven而言,所有信息都存在于POM中。因此,只有对POM进行的更改(添加依赖项或插件)才会影响从命令行使用Maven的行为。
我希望确保我有正确版本的WindowsBuilder来解决错误&#34;找不到GWT模块&#34;对于导入Eclipse的Maven项目,我应该查看Eclipse插件设置还是Maven POM.xml设置?在这种情况下,Eclipse,对吗?
是的,它应该是Eclipse而不是Maven。 Maven插件与WindowBuilder功能无关。项目可以是Maven项目,同时也可以配置为GWT项目。