java - 部署maven项目的标准方式

标签 java maven deployment

我有两个maven项目,我需要通过自动部署过程来部署它们。 (例如夜间构建或类似)
场景如下:

mv-proj1
 -dependency-1.jar
 -dependency-2.jar
 -dependency-3.jar
mv-proj2
 -dependency-3.jar
 -dependency-4.jar
 -mv-proj1.jar

mv-proj1和mv-proj2的来源不能公开。
mv-proj2 是可执行 jar 并为其他应用程序模块提供服务。

那么将这些部署到生产机器或者 UAT 机器的标准方法是什么?
我需要设置组织内的maven存储库吗?
我需要在 UAT 机器上安装 Maven 存储库吗?

我想到的一种可能的方法是设置和托管组织内 Maven 存储库,以及在 UAT 计算机上设置 Maven 以从组织内 Maven 存储库获取数据。并仅部署 pom.xml。

最佳答案

我会让我的选择取决于您的 Artifact 的消费者是谁。

如果消费者也是可以从组织内部 Maven 存储库中提取 JAR 的 Maven 项目,那么这绝对是一个很好的方法。我相信,每个认真使用 Maven 的组织迟早都会拥有这样自己的存储库的用例。我曾与 Artifactory 和 Nexus 合作过,觉得两者都是很棒的产品(以及此处所述用例的免费啤酒)。它们都很容易安装,而且这不应该是一个令人畏惧的探索,加油吧!

如果您的 UAT 机器将使用 Maven 来构建和安装任何将您的 Artifact 作为依赖项拉入的内容,那么它们将运行 Maven 客户端。这些客户端上会有一个本地存储库( Artifact 缓存),但这与上面提到的组织存储库不同,您可能不会将其部署在实际的 UAT 计算机上。

如果mv-proj2是一个“最终交付”,正如你所说的可执行,你可能想将它全部打包为一个漂亮的单个JAR(Maven可以为你做到这一点)并且将其分发给您的用户。您可以通过组织存储库再次执行此操作。您最终可以将其发布到某个网络驱动器或 Web 服务器。有很多方法可以做到这一点,例如使用 maven-jar-plugin ,其 outputDirectory 指向您要发布的位置。

关于java - 部署maven项目的标准方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16090321/

相关文章:

java - 正则表达式按分隔符分割,排除转义符并保留空字符串

java - 保存一对多 JPA 时出错,违反 PRIMARY KEY 约束

java - 增加显示 HTML 文本的 JTextPane 的字体大小

java - 为什么两个变量可以同名?

java - 如何设置最新的Dozer版本?

java - 如何添加一个额外的源目录供maven仅在运行测试或调试时使用?

java - Camel RouteDefinition 类的 NoSuchMethodError

c# - 使用 VS 2010 创建的数据库部署网站

ruby-on-rails - 多台服务器还是一台服务器中的所有内容?

ruby-on-rails - 更快的 heroku 推送