使用maven生成生产就绪输出

时间:2012-04-17 18:18:38

标签: java spring maven

我有一个多模块maven项目,我创建了一个新模块,依赖于其他3个模块。 (我已经有一个生成.war文件的web app maven模块,现在我需要这个)

此模块的输出为.jar,它还有一些资源:

  1. spring context xml file
  2. 属性文件
  3. 现在我想生成一个生产就绪文件夹,以便我可以将其上传到我的服务器。我希望maven可以为我做这件事。

    我需要以下布局:

    myjar.jar
    /libs/  (the 3 other maven modules that are dependancies)
    /resources
    

    此外,我的父pom.xml有一些通用的依赖项,我还需要打包slf4j / log4j。

    如果我可以将一个开关添加到mvn会产生这样的效果会很酷:

    mvn clean install production
    

    我打算通过命令行在我的服务器上运行它。

3 个答案:

答案 0 :(得分:5)

我认为您正在寻找的是Maven大会:

https://maven.apache.org/plugins/maven-assembly-plugin/

默认情况下,您可以使用配置文件禁用程序集的生成(可以加快开发过程)。

答案 1 :(得分:2)

@puce是正确的,因为您最好使用Assembly Plugin。你不能轻易做的是为maven添加另一个生命周期'生产'。如果你有时间可以编写插件来执行此操作,但最好使用名为“production”或“prod-deploy”的配置文件,以便在服务器上启用复制。

mvn clean install -Pprod-deploy

maven要记住的一件事是,它非常擅长使用它的约定来构建项目,但实际上脚本事情发生在构建生命周期的一边是非常糟糕的。

我曾多次使用外部脚本工具(如ant / python / bash和groovy)首先使用mvn运行构建,然后以更自然的语言编写脚本。

答案 2 :(得分:0)

Maven的目的是建立不在生产意义上的部署。为此我会推荐像Chef或Puppet这样的东西。从技术角度来看,当然可以通过Maven处理这些事情。还有可能建立像Jenkins这样的CI解决方案。此外,可以从Jenkins运行脚本来进行生产部署。