我的公司有一项政策,即部署到生产中的软件必须在无法访问 Internet 的特定机器上构建。

我们目前正在使用 Maven 。在开发机器上运行构建时,maven 会自动从中央 Maven 存储库下载依赖项,没有问题。然后在去生产之前,我们将本地Maven仓库(.m2/repository)中的所有文件放入源代码控制中,然后运行离线构建

  mvn -o -Dmaven.local.repo=<local repo dir> package

这种方法有效,但在源代码控制中管理数千个文件是一个真正的痛苦,尤其是对 Maven 插件的依赖。因此,我的问题是,如何 改进工作流 以便更轻松地维护源代码管理中的依赖项?

我正在考虑切换到 Gradle ,主要是因为它更灵活并且不依赖于从存储库下载的插件。但后来我发现 Gradle 本地缓存目录不能在计算机之间传输,这意味着我无法将其检入源代码管理。

建议和建议都表示赞赏。

最佳答案

使用内部存储库管理器,如 Nexus 或 Artifactory。始终将发布的人工制品投入生产。

但是在生产机器上构建项目并不是一个好主意。更好地使用完整的人工制品,如包含所有依赖项的 EAR 或 WAR,或者类似 jar-with-dependencies 或其他组装发行版的东西。在您的 CI 服务器上构建项目并将完整的包一键部署到生产服务器。

关于maven - 在没有互联网访问的情况下使用 Maven 或 Gradle 的最佳实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19903374/

10-12 00:32
查看更多