【问题标题】:Difference between Eclipse Build Project and Maven Compile commandEclipse Build Project 和 Maven Compile 命令的区别
【发布时间】:2015-07-27 06:35:23
【问题描述】:

EclipseBuild Project”命令是否与Maven命令“mvn compile”相同?两者基本上都做同样的事情吗?

如果,那么为什么我需要在运行“mvn clean install”之后在 STS 中执行“构建项目”才能运行应用程序而不会出现任何问题?运行“mvn clean install”应该已经编译了项目。在 STS 中刷新项目不应该足以运行它吗?

如果,那么 Eclipse 构建是否不同,因为 Java 编译器实现了 Java 语言规范来构建类?但是下面的Apache Maven link 说默认编译器是 javax.tools.JavaCompiler (顺便说一下,我使用的是 Java 1.6)。

【问题讨论】:

    标签: java eclipse maven build sts-springsourcetoolsuite


    【解决方案1】:

    简短的回答是,maven build和eclipse build不一样。

    基本上eclipse有自己的构建方式,和maven关系不大。在最基本的层面上,Eclipse 只是使用自己的 Java 编译器(Eclipse JDT 的一部分)进行 Java 编译。

    很难给出关于它们有何不同的准确答案,情况相当复杂,这完全取决于您安装了哪些东西(Eclipse 插件)。

    要获得尽可能接近的近似值,以便 Eclipse 所做的与 maven 在命令行中所做的最相似,您应该安装 m2e(maven eclipse 工具)。

    M2E 尝试使您的 Eclipse IDE 的行为“模拟”尽可能接近 maven 的命令行行为。它通过配置你的 eclipse 项目来做到这一点。例如,基于 maven poms 设置源文件夹、类路径等。如果您的 pom 不做“花哨”的事情(即使用一些不那么常见的 maven 插件),这将非常有效。

    当你在你的 pom 中使用 maven 插件来做一些“特殊”的事情时,比如可能会生成一些代码,或者其他什么,那么 m2e 有一个插件机制,它允许 maven 插件作者定义一个相应的 eclipse 插件来“教 eclipse”如何做同样的事情。

    这可能有点麻烦,因为并非所有 maven 插件都有对应的 Eclipse 插件,即使有,它们也不会自动为您安装到您的 Eclipse 实例中。

    如果你还没有插件来“教 Eclipse”关于你的一些 pom 插件。 M2e 会给你一个error about lifecyle mapping。这表明 m2e 和 maven 命令行可能不会为您的项目“做同样的事情”,由您以某种方式解决它(例如,通过安装相应的 Eclipse 的“项目配置器”)。

    【讨论】:

    • 这在 IntelliJ 下会更好吗?我有一种感觉,我在那里从来没有遇到过问题。
    • 我不是一个真正的 IntelliJ 用户,所以我可能错了。但我认为更好的是 IntelliJ 在您键入时实际上并没有构建您的项目。因此,它不会为您未打开的内容显示错误。这意味着它在大多数情况下都不会显示虚假错误。另一方面,它也不会在某些源文件中显示真正的错误,直到您实际打开它,或者直到您以某种方式手动构建代码。因此,它既好又坏。
    【解决方案2】:

    我不了解 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 打包的 Java 版本。 您可以使用 Window 的 > Preference > Java > Compiler 找到 Java 版本。 如果您自己构建项目,它将引用您的 JAVA_HOME。

    【讨论】:

      猜你喜欢
      • 2015-07-21
      • 2016-06-27
      • 2012-02-09
      • 2014-12-14
      • 1970-01-01
      • 2010-11-18
      • 2020-08-20
      • 2017-11-24
      • 2015-11-16
      相关资源
      最近更新 更多