2011-02-24 411 views
44

有人能解释我IntelliJ IDEA的编译,部署和打包绑定Maven项目的工作流程吗?IntelliJ IDEA:Maven,项目编译和部署

我遇到一些误解,当我通过IDEA的debug模式启动Tomcat服务器。例如,我有一件神器 - 战争档案。 据我了解,当我运行调试模式 - IDEA重新编译并将更改后的代码更新到war-archive。

但是,打包的maven工件会发生什么? IntelliJ是否会更新它?或者我必须在启动之前设置'Buld maven'选项以确保已更改的代码将被上传到环境中?

回答

61

的Intelli j没有使用Maven构建它使用自己的构建过程的项目。它使用pom文件作为项目的描述。

这意味着一些事情,如果您想在tomcat中运行时构建一个工件(如战争文件),那么您只需告知IntelliJ在“运行/调试配置”对话框中构建战争。 IntelliJ将自动构建您在运行/调试配置的部署选项卡下指定的任何工件。因此,如果你指定爆炸战争,它将建立爆炸战争,如果你指定了正规战争,它将会建立正规战争。

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

你也可以告诉的IntelliJ运行maven的包的目标,而不是打造神器。 IntelliJ会将目标目录下的任何内容部署到tomcat。

重要带走的是的IntelliJ使用两个独立的编译系统。你需要告诉每个构建系统要做什么。你需要告诉IntelliJ使用哪个构建系统来做什么。一旦项目被导入,IntelliJ默认会使用它自己的构建系统,除非你告诉它使用maven做某事。

尽管IntelliJ将构建您在pom文件中指定的工件,但它不会执行将工件部署到工件存储库(本地或其他方式)的内容,除非您在Maven工具窗口中单击部署目标。

此外,如果你改变你的pom文件,不具备自动重新导入启用这些更改将不会在您的项目,直到您单击从maven的工具窗口中的力重新导入选项中反映出来。

+0

告诉的IntelliJ运行,因为我的资源过滤在包装阶段完成的“一揽子”的目标将是巨大的,我...将这项工作比使用的IntelliJ的文物慢?谢谢。 – 2011-04-28 16:58:43

+0

@jon我认为这可能会稍微慢一些,主要是因为maven会尝试并拉动所有的poms。如果你在离线模式下运行,它可能会是一样的。 – 2011-04-28 17:21:38

+0

好信息,谢谢! – 2011-04-28 17:37:57

-4

我认为你正在寻找。

Maven IDEA Plugin

想法插件是用来生成一个项目文件(IPR,IML和IWS),这样你可以在上面使用IDE,IntelliJ IDEA的工作。

希望帮助

+2

IntellIJ现在自动加载一个pom。xml并生成所需的所有文件(ipr,iml和iws)因此,您不必再使用Maven IDEA插件。 – 2011-04-28 14:23:17