0

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

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

4

3 回答 3

2

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

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

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

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

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

于 2013-08-30T07:10:34.277 回答
0

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

有两个要求:

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

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

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

于 2013-09-09T04:15:19.333 回答
0

@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。
于 2013-09-09T06:23:51.670 回答