2013-04-04 141 views
1

我有Maven的一个项目,这是一个多模块项目正确部署Maven项目

Mainproject 
    project1 - jar 
    project2 - jar 
    project3 - web 

现在,我完成了我想测试服务器上的项目,但不知道如何上传这些,上我的电脑我添加了一个tomcat插件,它可以自动部署war文件到tomcat,但是服务器没有maven。

这种类型的项目转移到生产的方式是什么?

我应该只上传每个模块的目标目录吗?

谢谢

回答

1

你在这里问几个问题。有“我如何在服务器上测试”一个,有“转移到生产的方式”之一。他们可能完全不同。

我假定项目中的JAR文件被WAR文件使用并打包在其WEB-INF/lib目录中。如果我错了,那很酷。只是这种信息很容易知道。

Maven是一个构建工具。它不是一个部署工具。你在结尾处有一个WAR文件。如果您运行mvn install(或mvn deploy),则您拥有WAR文件的SNAPSHOT版本。这适用于对其他机器进行快速临时测试。但是,您很可能会使用适用于主机容器的方法来使其可用。注意:Maven DEPLOY与将war文件部署到tomcat不同。

在我看来,如果您将任何东西投入生产,或在客户面前,或在测试组面前,则应该使用Maven制作产品的发布。也就是说,使用release插件(通过release:prepare和release:插件目标)创建一个非SNAPSHOT工件(在这种情况下,是WAR文件的正式版本)的SNAPSHOT版本。一旦拥有该WAR文件,就可以用最简单的方式将其迁移到生产服务器(以最佳方式复制,部署到tomcat中)。您尚未提及此Web应用程序是否有数据库要求,在更改任何生产应用程序之前需要考虑这些要求。

但是,一旦你有正式版本,你有源代码标签,你可以准确知道什么代码正在运行。

我不认为你会得到的是能够从你的开发环境中自动将WAR文件复制到生产服务器。这里是龙。

+0

感谢您的回答@Edh,其中一些模块作为单独的jar运行,其中一个是war文件。这些项目具有像hibernate这样的其他jar的依赖,但是当我看到目标目录时,我没有看到jar,我尝试直接在目标目录中执行jar,但由于依赖关系,它不会运行。如何将我的程序上传到客户端服务器并确保它将运行?我是maven的新手 – alvariux 2013-04-04 04:19:40

+0

您可以使用Maven构建一个tar或zip文件,其中包含您需要部署到生产环境中所需的所有内容。 WAR很容易,因为他们通常会包装自己的行李。所以你需要抓住这场战争。 – EdH 2013-04-04 04:27:09

+1

JAR文件也需要有它们的依赖关系。 Maven可以提供。我会使用程序集插件来打包你的工件和你的工件需要的东西。然后,您可以将该单个文件放入您的目标环境中,按照您认为合适的方式解包并移动。我已经有了包含工件的tar文件,以及一旦它处于生产环境中,便于部署等的脚本。但这些都是定制的脚本,专为目标环境量身定制。Maven不会提供任何开箱即用的功能 – EdH 2013-04-04 04:29:04