Maven目标的重点是什么?

时间:2014-11-09 17:40:56

标签: java spring maven

我来自Ruby on Rails背景,我正在学习Java Spring MVC。当我尝试在STS中使用Maven编译我的代码时,它希望我包含一个目标。 All the guides I read on this seem vague and unclear.目标的重点是什么?为什么我不能编译我的源代码并运行它?

1 个答案:

答案 0 :(得分:3)

您必须了解Maven 复杂模块化

它没有任何“编译”代码或“运行”代码的概念。它的作用是按build lifecycle

的顺序触发插件

运行Maven目标会触发特定的Maven插件。例如,运行mvn compile会触发Maven compiler plugin

对于刚刚开始使用Java的人来说,这一切似乎都有点过头了,而且有很多“为什么Maven不能就其所说的那样做”的问题。

其中大多数源于对Maven 的基本误解。它(严格来说)不是为了“编译和运行”代码而设计的。它旨在按特定顺序执行许多预配置的步骤。

说到“运行你的代码”,这变得更加棘手:

  • 使用maven exec插件运行代码,调用mvn exec:java。你显然需要配置插件
  • 将您的代码作为带有嵌入式Tomcat服务器的webapp运行,调用mvn tomcat7:run-war
  • 在嵌入式网络服务器调用中的devMode中将您的代码作为GWT应用程序运行mvn gwt:run

所有这些目标的共同点是,它们会触发特定预配置插件,执行您要求的任务。

进一步值得指出的是,Maven旨在编译,测试和安装您的代码,而不是运行它。因此,虽然可能存在用于运行代码的插件,但Maven的真正优势在于能够自动编译,测试和部署代码到Maven存储库。

最后请注意,您链接的页面顶部的大量红色警告表示:

  

Apache Maven 1.x已经到了终点,已不复存在   支撑。

请注意。我们现在正在Maven 3.2.X。不要阅读古代和过时版本的文档。这没有任何意义,只会让你感到困惑。