我的公司制定了一项政策,即部署到生产中的软件必须建立在无法访问互联网的特定机器上。
我们目前正在使用Maven
。在开发机器上运行构建时,maven会自动从中央Maven存储库下载依赖项而不会出现问题。然后在开始生产之前,我们将所有文件放在本地Maven存储库(.m2 / repository)中进入源代码控制,然后使用
mvn -o -Dmaven.local.repo=<local repo dir> package
这种方法有效,但在源代码管理中管理数千个文件真是太痛苦了,尤其是Maven插件的依赖关系。因此,我的问题是,我如何改进工作流程,以便更容易维护源代码管理中的依赖项?
我正在考虑切换到Gradle
,主要是因为它更灵活,不依赖于从存储库下载的插件。但后来我发现Gradle本地缓存目录不能在计算机之间传输,这意味着我无法将其检入源代码控制。
建议和建议都表示赞赏。
答案 0 :(得分:2)
使用Nexus或Artifactory等内部存储库管理器。始终将已发布的人工制品投入生产。
但是在生产机器上构建项目并不是一个好主意。更好地使用完整的人工制品,如EAR或WAR,包括所有依赖项,或者像jar-with-dependencies或其他组合发行版。在CI服务器上构建项目,并通过单击生成服务器来部署完整的包。