从maven的开发到生产

时间:2010-05-07 18:27:07

标签: java maven-2

我对在开发和生产环境中使用maven感到困惑 - 我确信这很简单,我很遗憾。感谢任何帮助......

我在本地机器上的eclipse中设置了maven并编写了一些软件。我真的很喜欢它包括依赖罐子这样的东西很容易。

这就是我的开发环境。但现在我想在远程服务器上将项目发布到生产中。我搜索了文档,但我无法弄清楚它应该如何工作或maven最佳实践是什么..你应该这样做:

a)还要在生产环境中运行maven,并将所有文件上传到生产环境并在那里重建项目? (我在生产服务器上重建“已发布”代码的想法,因此我很确定这是不对的..)

b)使用mvn:package创建你的jar文件,然后将其复制到生产中? (但那么所有那些好的依赖项是什么?是不是存在一个危险,你的测试代码现在将在生产环境中针对不同版本的从属jar运行,可能会破坏你的代码?或者缺少一个jar ......? )

c)其他我不知道的事情......

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:16)

  • 您应该将您的代码置于版本控制之下(并且您永远不会将文件“上传”到另一台机器,如果需要,您可以从版本控制系统“下载”它们。)

  • 您应该以可以部署在生产环境中执行的格式(WAR,EAR,另一种类型的包)打包您的代码。这样的包通常包括依赖性。要构建更复杂的捆绑包,Maven Assembly Plugin可以提供帮助。

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

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

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

当然,这方面存在各种变化(部署到生产大部分时间都是公司特定的)但总的想法就在那里。

答案 1 :(得分:3)

答案 2 :(得分:1)

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

至于部署,you can use maven's antrun plugin to copy files locally or via scp