Eclipse “构建项目”命令与 Maven 命令“ mvn compile ”相同吗?两者基本上都做同样的事情吗?
如果是,为什么我在运行“mvn clean install”之后需要在STS中执行“Build Project”才能运行应用程序而没有任何问题?运行“mvn clean install”应该已经编译了项目。不应该刷新STS中的项目足以运行它吗?
如果否,则Eclipse构建不同,因为Java编译器实现了Java语言规范来构建类吗?但是下面的Apache Maven link说默认编译器是javax.tools.JavaCompiler(顺便说一句,我使用的是Java 1.6)。
答案 0 :(得分:14)
简短的回答是没有,maven构建和eclipse构建不一样。
基本上,eclipse有自己的构建方式,与maven几乎没有关系。在最基本的层面上,Eclipse只使用自己的Java编译器(Eclipse JDT的一部分)进行Java编译。
对于它们如何区别的确切答案很难给出,情况非常复杂,而且它完全取决于您安装的是什么东西(Eclipse插件)。
为了得到尽可能接近的近似值,以便Eclipse所做的,就像maven在命令行上所做的那样,你应该安装m2e(maven eclipse工具)。
M2E试图让你的Eclipse IDE的行为模仿'尽可能接近maven的命令行为。它通过配置您的eclipse项目来实现。例如,根据maven poms设置源文件夹,类路径等。如果你的朋友不喜欢这种情况,这种方法很有效。事情(即使用一些不常见的maven插件)。
当你在你的pom中使用maven插件做特殊的'像m2e这样的东西可能生成一些代码,或者其他什么东西,然后m2e有一个插件机制,允许maven插件作者定义一个相应的eclipse插件,该插件教授eclipse'如何做同样的事情。
这可能会变得毛茸茸,因为并非所有的maven插件都有相应的Eclipse插件,即使这样,它们也不会自动安装到Eclipse的实例中。
如果你还没有通过插件去教eclipse'关于你的一些pom插件。 M2e会给你一个error about lifecyle mapping。这表明m2e和maven命令行可能不会做同样的事情'对于您的项目,由您决定以某种方式解决它(例如通过安装相应的Eclipse'项目配置器')。
答案 1 :(得分:0)
我不知道Maven,但是Eclipse构建与某个项目的ANT构建不同,所以应该是Maven的情况。 Eclipse有自己的内部增量构建机制。
Eclipse内部构建(Eclipse的Build Project或Build All或Clean)和Maven / Ant构建基本上做同样的事情,这意味着他们都将编译源代码文件。现在一个明显的区别是Eclipse内部构建不会为您生成EAR,WAR等文件,而是使用ANT / Maven。
如果ANT / Maven使用相应的元素指定了类路径,并且通过配置构建路径在Eclipse中完成相同的思考,那么当Eclipse进行内部构建时,可以引用那些JAR或运行时库。
关于编译器,当你使用Eclipse构建时,它将使用自己的内部javac编译器,它与Eclipse打包在一起。 您可以使用Window的>找到Java版本。偏好> Java>编译器。在您自己的项目构建的情况下,它将引用您的JAVA_HOME。