Java 在maven从开发到生产

Java 在maven从开发到生产,java,maven-2,Java,Maven 2,我对maven在开发和生产环境中的使用感到困惑——我确信我遗漏了一些简单的东西。谢谢你的帮助 我在本地机器上的eclipse中设置了maven,并编写了一些软件。我真的很喜欢它是如何使包括依赖罐子这样的事情变得非常容易 这就是我的开发环境。但是现在我想在远程服务器上发布该项目。我已经搜索了文档,但是我不知道它应该如何工作,或者maven的最佳实践是什么。。你是否应该: a) 还要在生产环境中运行maven,并将所有文件上载到生产环境中,然后在那里重建项目?(我内心深处有些东西对在生产服务器上重建

我对maven在开发和生产环境中的使用感到困惑——我确信我遗漏了一些简单的东西。谢谢你的帮助

我在本地机器上的eclipse中设置了maven,并编写了一些软件。我真的很喜欢它是如何使包括依赖罐子这样的事情变得非常容易

这就是我的开发环境。但是现在我想在远程服务器上发布该项目。我已经搜索了文档,但是我不知道它应该如何工作,或者maven的最佳实践是什么。。你是否应该:

a) 还要在生产环境中运行maven,并将所有文件上载到生产环境中,然后在那里重建项目?(我内心深处有些东西对在生产服务器上重建“已发布”代码的想法感到困惑,所以我相当肯定这是不对的。)

b) 使用mvn:package创建jar文件,然后将其复制到生产环境中?(那么,所有这些良好的依赖关系又如何呢?是否存在这样的危险:您的测试代码现在将在生产环境中针对不同版本的依赖jar运行,可能会破坏您的代码?或者丢失一个jar…)

c) 还有一些我还没弄明白的事

提前感谢您的帮助

您需要查看和。

  • 你应该让你的代码处于版本控制之下(而且你从不将文件“上传”到另一台机器,如果需要,你可以从版本控制系统“下载”它们)

  • 您应该将代码打包为一种格式(WAR、EAR、另一种捆绑包),可以部署在生产环境中执行。此类捆绑包通常包括依赖项。要构建更复杂的捆绑包,可以使用

  • Maven生成的工件(JAR、WAR等)应该通过远程存储库共享(并因此部署到这个远程存储库,我的意思是
    mvn部署
    )。远程存储库可以是一个简单的文件系统,通过web服务器或更高级的解决方案提供服务,如

  • 开发通常使用快照依赖项(例如1.0-SNAPSHOT)完成。在发布时,您应该将版本更改为“固定”版本(例如1.0)以及
    pom.xml
    中的其他一些位,运行构建以检查一切是否正常,提交修改后的
    pom.xml
    ,在VCS中创建一个标记,将版本升级到
    pom.xml
    中的新快照(例如1.1-SNAPSHOT),在VCS中提交新的
    pom.xml
    。整个过程需要一些工作,但这可以使用自动化

  • 在生产环境中,从远程存储库获取要部署的工件并进行部署(有些项目使用Maven将部署自动化到生产服务器,但这是另一回事)


当然,围绕这一点有很多变化(大多数情况下,部署到生产环境是特定于公司的),但总体思路是这样的。

在构建工件时,您通常会说明依赖项的范围。在默认范围内,它应该打包在您的存档中。如果您不想要它,请使用范围“提供”-在这种情况下,您必须准备提供依赖项的运行时环境。通常,只为部署而重建包是个坏主意


至于部署,。

谢谢大家的帮助!帕斯卡-很好的回答!非常感谢。我觉得你让我走上了一条更好的道路:-)不客气,很高兴你觉得这很有帮助。