IntelliJ IDEA:Maven,项目编译和部署

Posted

技术标签:

【中文标题】IntelliJ IDEA:Maven,项目编译和部署【英文标题】:IntelliJ IDEA: Maven, project compilation and deployment 【发布时间】:2011-07-03 12:52:11 【问题描述】:

谁能解释一下 IntelliJ IDEA 使用绑定的 maven 项目编译、部署和打包的工作流程?

我在通过IDEA的调试模式启动tomcat服务器时遇到了一些误解。例如,我有一个工件 - 战争档案。 据我了解,当我运行调试模式时 - IDEA 会重新编译并将更改的代码更新到战争档案中。

但是打包的 Maven 工件会发生什么? IntelliJ 会更新它吗?或者我必须设置 'Buld maven before startup' 选项以确保将更改的代码上传到环境?

【问题讨论】:

【参考方案1】:

我想你正在寻找那个。

Maven IDEA Plugin

IDEA 插件用于为项目生成文件(ipr、iml 和 iws),以便您可以使用 IDE、IntelliJ IDEA 处理它。

希望有帮助

【讨论】:

IntellIJ 现在会自动加载 pom.xml 并生成它需要的所有文件(ipr、iml 和 iws),因此您不必再使用 Maven IDEA 插件了。【参考方案2】:

Intelli J 不使用 maven 来构建它使用自己的构建过程的项目。它使用 pom 文件作为项目的描述。

这意味着几件事,如果您想在 tomcat 中运行时构建诸如 war 文件之类的工件,那么您所要做的就是告诉 IntelliJ 在运行/调试配置对话框中构建战争。 IntelliJ 将自动构建您在运行/调试配置的部署选项卡下指定的任何工件。因此,如果您指定爆炸战争,它将构建爆炸战争,如果您指定常规战争,它将构建常规战争。

有时人们需要运行自定义插件或构建目标,在这种情况下,您可以配置 IntelliJ 以运行自定义 maven 目标。

您还可以告诉 intellIJ 运行 maven 包目标而不是构建工件。 IntelliJ 会将目标目录下的任何内容部署到 tomcat。

重要的一点是 IntellIJ 使用两个独立的构建系统。您需要告诉每个构建系统该做什么。你需要告诉 IntelliJ 使用哪个构建系统来做什么。导入项目后,IntelliJ 默认将使用它自己的构建系统,除非您告诉它使用 maven 做某事。

虽然 IntelliJ 将构建您在 pom 文件中指定的工件,但它不会执行诸如将它们部署到您的工件存储库(本地或其他方式)之类的事情,除非您在 Maven 工具窗口中单击部署目标。

此外,如果您更改了 pom 文件并且没有启用自动重新导入,则这些更改将不会反映在您的项目中,直到您从 maven 工具窗口中单击强制重新导入选项。

【讨论】:

告诉 IntelliJ 运行“包”目标对我来说非常棒,因为我在打包阶段完成了资源过滤......这会比使用 IntelliJ 的工件慢吗?谢谢。 @jon 我认为这可能会稍微慢一些,主要是因为 maven 会尝试拉动所有的 pom。如果你在离线模式下运行,它可能是一样的。 我刚刚设置了一个 Jersey RESTful Web 服务以在 Tomcat 上运行,这很有帮助。谢谢。 我可以“告诉 intellIJ 运行 maven 包目标而不是构建工件”真是太好了,但是如何......

以上是关于IntelliJ IDEA:Maven,项目编译和部署的主要内容,如果未能解决你的问题,请参考以下文章

Intellij-idea 如何编译maven工程

Intellij Idea 中,如何使用maven+SVN

使用 IntelliJ IDEA 运行 Maven 项目

intellij IDEA创建的maven项目里有个target文件,怎么来的?有啥用?

IntelliJ IDEA导入Maven项目

Eclipse+IntelliJ反编译Eclipse/IntelliJ IDEA反编译查看源码及注释