2012-04-17 80 views
2

我有一个多模块maven项目,并且我创建了一个依赖于其他3个模块的新模块。 (我已经有一个产生.war文件web应用程序的Maven模块,现在我需要这个)使用maven生成生产就绪输出

该模块的输出是一个.jar,它有一些资源也分别是:

  1. 春天上下文XML文件
  2. 属性文件

现在我想产生一个生产准备文件夹,这样我就可以把它上传到我的服务器。我希望maven能为我做这件事。

我需要以下布局:

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

此外,也有一些通用的依赖关系,我父母的pom.xml有像SLF4J/log4j的/我还需要打包。

这将是冷静,如果我可以添加一个开关MVN将产生此类似:

mvn clean install production 

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

+0

考虑使用本[Q&A]讨论的更标准化的生产文件夹结构(http://stackoverflow.com/questions/10151458/building-complete-application-folder-with-maven/10152209#10152209)。 – yorkw 2012-04-17 21:55:58

回答

2

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

mvn clean install -Pprod-deploy 

一件事与Maven要记住的是,这是在建设项目中使用它的约定非常好,但它是相当糟糕的剧本其实事情发生的构建生命周期的出方。

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

+0

谢谢。是否有可能从我的其他模块樱桃挑选一个文件,并将其添加到我的lib文件夹? – Blankman 2012-04-17 20:35:31

+1

不是真的,严格来说你只应该引用maven项目的二进制输出,即jar文件。您可以使用依赖插件获取这些内容。 – 2012-04-17 20:37:45

+1

@Blankman您可以使用maven-dependency-plugin的unpack-dependencies目标从工件中提取资源。然后你可以将它包含在你的程序集中。 – Puce 2012-04-17 21:44:13

0

Maven的意图是在生产意义上构建不部署。为此,我会推荐像厨师或木偶这样的东西。从技术角度来看,它当然可以通过Maven处理这些事情。还有什么可以建立像詹金斯这样的CI解决方案。此外,可以从Jenkins运行脚本来执行生产部署。