我有一个多模块maven项目,我创建了一个新模块,依赖于其他3个模块。 (我已经有一个生成.war文件的web app maven模块,现在我需要这个)
此模块的输出为.jar,它还有一些资源:
现在我想生成一个生产就绪文件夹,以便我可以将其上传到我的服务器。我希望maven可以为我做这件事。
我需要以下布局:
myjar.jar
/libs/ (the 3 other maven modules that are dependancies)
/resources
此外,我的父pom.xml有一些通用的依赖项,我还需要打包slf4j / log4j。
如果我可以将一个开关添加到mvn会产生这样的效果会很酷:
mvn clean install production
我打算通过命令行在我的服务器上运行它。
答案 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运行脚本来进行生产部署。