Java 正确部署maven项目

Java 正确部署maven项目,java,maven,Java,Maven,我和maven有一个项目,这是一个多模块项目 Mainproject project1 - jar project2 - jar project3 - web 现在我完成了这个项目,我想在服务器上测试它,但不知道如何上传它们,在我的计算机上,我添加了一个tomcat插件,它自动将war文件部署到tomcat,但服务器上没有maven 这类项目的生产方式是什么 我应该上传每个模块的目标目录吗 谢谢你在这里问了几个问题。有“如何在服务器上进行测试”和“如何进入生产环境”两个

我和maven有一个项目,这是一个多模块项目

Mainproject
    project1 - jar
    project2 - jar
    project3 - web
现在我完成了这个项目,我想在服务器上测试它,但不知道如何上传它们,在我的计算机上,我添加了一个tomcat插件,它自动将war文件部署到tomcat,但服务器上没有maven

这类项目的生产方式是什么

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


谢谢你在这里问了几个问题。有“如何在服务器上进行测试”和“如何进入生产环境”两个问题。他们可能会有很大的不同

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

Maven是一个构建工具。它不是一个部署工具。在这篇文章的结尾,你得到的是一份战争文件。如果运行mvn安装(或mvn部署),则WAR文件具有快照版本。这将适用于对其他机器进行快速、特别的测试。但是,您很可能会使用适用于宿主容器的方法使它们可用。注意:Maven部署与将war文件部署到tomcat不同

在我看来,如果您正在将任何东西投入生产,或者在客户面前,或者在测试组面前,您应该使用Maven发布产品。也就是说,使用release插件(通过release:prepare和release:plugingoals)创建工件的非快照版本(在本例中,是WAR文件的官方版本)。一旦您拥有了WAR文件,您就可以以任何最简单的方式将其迁移到生产服务器(以最好的方式复制、部署到tomcat)。您没有提到此web应用程序是否有数据库需求,在更改任何生产应用程序之前需要考虑这些需求

但是,一旦有了正式版本,就有了源代码的标签,就可以准确地知道正在运行的代码


我认为您将无法从开发环境中自动将WAR文件复制到生产服务器中。龙来了。

你在这里问了几个问题。有“如何在服务器上进行测试”和“如何进入生产环境”两个问题。他们可能会有很大的不同

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

Maven是一个构建工具。它不是一个部署工具。在这篇文章的结尾,你得到的是一份战争文件。如果运行mvn安装(或mvn部署),则WAR文件具有快照版本。这将适用于对其他机器进行快速、特别的测试。但是,您很可能会使用适用于宿主容器的方法使它们可用。注意:Maven部署与将war文件部署到tomcat不同

在我看来,如果您正在将任何东西投入生产,或者在客户面前,或者在测试组面前,您应该使用Maven发布产品。也就是说,使用release插件(通过release:prepare和release:plugingoals)创建工件的非快照版本(在本例中,是WAR文件的官方版本)。一旦您拥有了WAR文件,您就可以以任何最简单的方式将其迁移到生产服务器(以最好的方式复制、部署到tomcat)。您没有提到此web应用程序是否有数据库需求,在更改任何生产应用程序之前需要考虑这些需求

但是,一旦有了正式版本,就有了源代码的标签,就可以准确地知道正在运行的代码


我认为您将无法从开发环境中自动将WAR文件复制到生产服务器中。这里是龙。

感谢您的回答@Edh,其中一些模块作为单独的jar运行,其中一个是war文件。这些项目与其他jar(如hibernate)有依赖关系,但是当我看到目标目录时,我没有看到jar,我尝试直接在目标目录中执行jar,但由于依赖关系,它不会运行。如何将程序上载到客户端服务器并确保其运行?我是Maven新手。您可以使用Maven构建一个tar或zip文件,其中包含部署到生产环境所需的所有内容。战争是相当容易的,因为他们通常自带行李。因此,抓住战争就是你所需要的一切。JAR文件也需要有它们的依赖关系。马文可以做到这一点。我会使用汇编插件来打包您的工件和您需要的工件。然后,您可以将单个文件带到目标环境中,解包并根据需要移动。我已经有了包含工件的tar文件,以及使其在生产环境中更易于部署的脚本等。但这些都是为目标环境量身定制的定制脚本。Maven不会提供任何现成的东西。汇编插件可能会有点势不可挡,因为它可以做很多事情。对于JAR及其依赖项,您希望查看汇编脚本()中的dependencySet声明,并使用transativeDependencies逻辑。这将拖入它需要的东西。这是你的出发点。如果您有时间,请进行一次健全性检查,确保您只获取您使用的内容(并排除您不使用的jar)。感谢您的回答@Edh,其中一些模块作为单独的jar运行,其中一个是war文件。这些项目与其他JAR(如hibernate)有依赖关系,但当我看到目标目录时,我看不到j