【问题标题】:Resolve/Download dependencies after deployment to remote server部署到远程服务器后解决/下载依赖项
【发布时间】:2013-09-02 19:55:15
【问题描述】:

由于大量外部依赖项,我有一个很大的战争文件,而且我有互联网连接速度问题,因此我不想在我的战争中保留依赖罐,这样我就可以减少战争规模并更快地将我更新的战争从开发机器上传到远程服务器。

我希望 maven 项目在远程 tomcat 服务器本身上传并开始运行时下载依赖项。我如何配置 maven 来做到这一点?

【问题讨论】:

  • 您是否尝试在远程服务器上运行“mvn dependency:resolve”?
  • @Guillaume:不,我没有尝试过,但是我应该如何防止将依赖项添加到战争中?使用依赖范围 provided ?之后还有什么?
  • @Guillaume 你能否澄清一下这个作为答案,以便我可以接受?!

标签: java maven


【解决方案1】:

有一个非常简单的解决方案:在服务器上构建项目。

一种简单的方法是将所有源代码放入版本控制系统中,例如MercurialGit

除了为您提供历史记录和自动备份之外,DVCS 还具有非常高效的算法来更新远程副本(它们只是传输更改,因此如果您更改单行,则只会通过线路发送一行)。

在您的服务器上构建还意味着您可以非常快速地下载服务器上的依赖项(这可能具有非常好的下载率)。而且本地部署会非常非常快。

最后但同样重要的是:当您使用版本控制时,当出现问题时,您将能够快速回到上一个稳定版本。

【讨论】:

    【解决方案2】:

    正如 Aarom 所说,您应该直接在服务器上构建项目。

    有两个要求:

    • 您需要在远程服务器上具有命令行访问权限。
    • Maven 必须安装在远程服务器上。

    然后您可以将项目的源代码上传到远程服务器(无依赖关系)。 进入项目的根目录并运行构建命令(mvn package 或您使用的任何自定义构建命令)。

    就是这样,远程服务器上的 .war 加载了所有依赖项;然后您可以删除源文件。

    【讨论】:

      【解决方案3】:

      @user01

      1. 将所有需要的 3rd-party jar 安装到 Tomcat 的 lib 文件夹中。
      2. 在 Maven pom.xml 中将这些依赖项的范围设置为“已提供”。
      3. 在您的远程服务器上安装 Maven。
      4. 安装 CI 服务器,例如 Jenkins、Continuum、Bamboo、Hudson、CruiseControl 等。我建议使用 Jenkins。
      5. 希望您使用的是版本控制软件,例如 SVN、Git、Mercurial、Bazaar 或 CVS。如果没有,那么我建议设置 源代码存储库的 Git 或 SVN。
      6. 在您的 pom.xml 中配置 scm 标记以指向您的项目在源代码存储库中的位置。
      7. 配置您的 CI 服务器以从您的源代码存储库中获取您的 pom.xml。您的 CI 服务器将读取 scm 标签,并且 您在 scm 标记中配置的 URL,并将检查您的 出项目。然后,您的 CI 服务器将构建您的项目。
      8. 您可以让 Jenkins 通过 Jenkins 部署插件将您构建的战争工件部署到 Tomcat,也可以使用 Maven 插件,例如 tomcat7-maven-plugin 或 Cargo。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-25
        • 1970-01-01
        • 2016-09-03
        • 1970-01-01
        • 2013-04-18
        • 1970-01-01
        • 1970-01-01
        • 2017-12-14
        相关资源
        最近更新 更多