3

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

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

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

这种方法有效,但在源代码管理中管理数千个文件确实很痛苦,尤其是 Maven 插件的依赖项。因此我的问题是,如何改进工作流程以便更容易维护源代码管理中的依赖关系?

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

建议和建议都表示赞赏。

4

1 回答 1

2

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

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

于 2013-11-11T11:12:02.000 回答