1

我正在将现有项目转换为 Maven 及其构建和发布过程。我的结构是这样 ParentProj -Child1 -Child2 -ChildWeb3 -ChildWeb4

我不确定 maven 最佳实践说什么,但我需要 1. 分别标记我的所有子项目 2. 当我通过部署服务器转移到 (mvn release:prepare release:perform -B) 时,它会创建一种存储库我想在远程服务器上创建一个文件夹&只把所有的罐子和战争放在里面&没有其他文件 3.还有什么方法可以在我的远程服务器中执行 shell 脚本

等待您的指导

4

1 回答 1

1

您需要做的事情违反了 Maven 约定和推荐的最佳实践。必须记住,Maven 是构建和发布,而不是部署。是的,有一个部署目标,但该目标获取从构建或发布中生成的工件并将其推送到存储所有工件版本的远程 Maven 存储库。该存储库结构是为什么当您执行 mvn release:perform 时 JAR 和 WAR 文件最终位于不同文件夹中的原因,这是要求 maven 执行 mvn 部署的另一种方式。

现在,如果您想保持 Maven 的做事方式,您应该编写另一个脚本(shell、Ant、您的选择)进行部署,该脚本将从远程 Maven 工件存储库中获取这些 JAR 和 WAR 文件并按照您的方式捆绑它们想要并将其部署到您希望安装它们的服务器上。

现在,您可以更改 maven 以按照您的要求进行操作,但是您必须创建另一个项目/模块,该项目/模块仅以您想要的方式将 JAR 和 WAR 文件捆绑为存档文件(tar,压缩包,压缩包)。Maven 程序集插件是完成这项工作的工具。您可以在此处找到有关程序集插件的更多信息。现在,请记住, mvn release:perform 仍会将存档推送到 Maven 存储库。您仍然需要一个部署脚本来从远程 Maven 存储库中获取存档文件并将其解压缩到您要部署到的服务器。

于 2010-11-29T18:28:24.903 回答