我已经将 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
提示缺少很多依赖项。
我是否正确地假设诸如 mvn clean install
这样的命令行 Maven 命令不会查看 Eclipse .classpath 文件?
Maven不是只依赖以下内容吗?
- POM.xml 文件
- 存储库,例如 Maven 中央存储库
- 传递给
mvn
的命令行参数 - 源代码/资源/等。 (您想要构建的内容,而不是 .classpath 等元数据)
如果我的理解是正确的,为什么 Eclipse 会允许我对我导入的 Maven 项目进行不正确的更改?哪些类型的 Eclipse 更改实际上是安全的——换句话说,当我在命令行执行 mvn clean install
时,我在 Eclipse 中所做的哪些类型的更改实际上会得到反射(reflect)?
作为另一个示例,我尝试在我的一个模块中使用 Eclipse 的 WindowBuilder 编辑器来处理某些 GWT(J2EE/Maven 意义上的“模块”,而不是 GWT 意义上的“模块”)。因为我希望确保我有正确版本的 WindowsBuilder 来解决 Error "No GWT module found" for Maven project imported into Eclipse ,我应该查看 Eclipse 插件设置还是 Maven POM.xml 设置? Eclipse,在这种情况下,对吧?
感谢您帮助我理解。
最佳答案
Am I correct in assuming a command-line Maven command such as
mvn clean install
won't look at the Eclipse .classpath file?
是的,Maven不使用这个文件。该文件仅由 Eclipse 用于保存有关项目的信息,即源目录及其相应的类或输出目录以及类路径条目。
Maven 依赖于您提到的资源:POM 文件、存储库等
why would Eclipse allow me to make changes that aren't correct for a Maven project I've imported?
即使项目是 Maven 项目,Eclipse 仍然允许用户以可能不遵循标准 Maven 约定的方式更改项目的build设置。例如,模块中的默认源位于 src/main/java
下,但没有什么可以阻止您右键单击该模块,并在构建路径设置中添加不遵循的源文件夹这个标准(不用说这不是一件好事)。
Eclipse 中的 Maven 项目只是一个配置为使用 Maven 插件的项目,该插件支持使用 Maven 进行依赖项管理(例如,它也可以同时是一个 Groovy 项目)。
what types of changes that I make in Eclipse will actually get reflected at the time I go to execute
mvn clean install
at the command line?
就 Maven 而言,所有信息都存在于 POM 中。因此,只有对 POM 进行的更改(添加依赖项或插件)才会影响从命令行使用 Maven 的行为。
As I'm looking to ensure I have the right version of WindowsBuilder to resolve Error "No GWT module found" for Maven project imported into Eclipse, should I be looking at Eclipse plugin settings or Maven POM.xml settings? Eclipse, in this case, right?
是的,应该是 Eclipse 而不是 Maven。 Maven 插件与 WindowBuilder 功能无关。项目可以是 Maven 项目,同时可以配置为 GWT 项目。
关于java - Eclipse 中的设置是否会传播到 Maven?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27388713/