[英]Releasing from development into production in maven
我对在开发和生产环境中使用maven感到困惑 - 我确信这很简单,我很遗憾。 感谢任何帮助..
我在本地机器上的eclipse中设置了maven并编写了一些软件。 我真的很喜欢它包括依赖罐子这样的东西很容易。
这就是我的开发环境。 但现在我想在远程服务器上将项目发布到生产中。 我搜索了文档,但我无法弄清楚它应该如何工作或maven最佳实践是什么..你应该:
a)还要在生产环境中运行maven,并将所有文件上传到生产环境并在那里重建项目? (我在生产服务器上重建“已发布”代码的想法让我感到不满,所以我很确定这是不对的..)
b)使用mvn:package创建你的jar文件,然后将其复制到生产中? (但那么所有那些好的依赖项是什么?是不是存在一个危险,你的测试代码现在将在生产环境中针对不同版本的依赖jar运行,可能会破坏你的代码?或者缺少一个jar ...? )
c)其他我不知道的东西..
在此先感谢您的帮助!
您应该将您的代码置于版本控制之下(并且您永远不会将文件“上传”到另一台机器,如果需要,您可以从版本控制系统“下载”它们)。
您应该以一种格式(WAR,EAR,另一种类型的包)打包您的代码,这些格式可以部署在生产环境中以便执行。 这样的包通常包括依赖性。 要构建更复杂的包, Maven Assembly Plugin可以提供帮助。
Maven生成的工件(JAR,WAR,等等)应该通过远程存储库共享 (因此部署 - 我的意思是mvn deploy
在这里mvn deploy
- 到这个远程存储库)。 远程存储库可以是通过Web服务器或更高级的解决方案(如Nexus)提供的简单文件系统。
开发通常使用SNAPSHOT依赖项(例如1.0-SNAPSHOT)完成。 在发布时,您应该将版本更改为“固定”版本(例如1.0)和pom.xml
其他位,运行构建以检查一切正常,提交修改后的pom.xml
,创建在VCS标签,推进版本在新的快照(如1.1-SNAPSHOT) pom.xml
,提交新pom.xml
在VCS。 整个过程需要一些工作,但这可以使用Maven Release Plugin自动完成。
在生产环境中,从远程存储库获取要部署的工件并进行部署(一些项目使用Maven将部署自动化到生产服务器,但这是另一个故事)。
当然,存在各种变化(部署到生产大多数时间是公司特定的)但总体思路是存在的。
构建工件时,通常会说明依赖项的范围。 在默认范围内,它应该打包在您的存档中。 如果您不想要它,请使用“提供”范围 - 在这种情况下,您必须准备提供依赖关系的运行时环境。 重建一个仅用于部署的软件包通常是一个坏主意。
至于部署, 您可以使用maven的antrun插件在本地或通过scp复制文件 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.