2

我有一个多模块 maven 项目,我创建了一个依赖于其他 3 个模块的新模块。(我已经有一个生成 .war 文件的网络应用程序 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

我计划通过命令行在我的服务器上运行它。

4

3 回答 3

5

我认为您正在寻找的是一个 Maven 程序集:

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

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

于 2012-04-17T18:23:53.467 回答
2

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

mvn clean install -Pprod-deploy

使用 maven 需要记住的一件事是,它非常擅长使用它的约定来构建项目,但它在实际编写脚本以在构建生命周期之外发生的事情方面非常糟糕。

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

于 2012-04-17T19:54:59.710 回答
1

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

于 2012-04-18T07:26:46.143 回答