eclipse - (Maven+Eclipse)每个开发人员如何在本地处理jar?

标签 eclipse maven

我对 Maven 和持续集成有点新手,所以请原谅我下面的小问题 在我们的项目中,我们打算通过使用 Maven 和 hudson 在我们的开发集成服务器上执行自动化的日常构建来引入持续集成

在我们的项目中,我们过去常常将所有 jar(内部、商业和第 3 方) checkin 到一个单独项目下的 SCM,并强制 Web 项目依赖于该项目,以便该项目可以在 Eclipse 中编译然后导出一个 EAR

我的问题是,每个开发人员现在如何在自己的机器上本地编译项目?我们是否应该从 scm 中删除 jars 项目? 如果是:这是否意味着每个开发人员都必须从 eclipse 内引用企业的 Maven 存储库,以便项目可以编译?在这种情况下,将会有极端的西北开销? 如果否:scm 上的 jar 与 maven 存储库中的 jar 之间可能存在冲突

与上述问题相关的另一个问题是,每个开发人员在他的计算机上都有自己的 Maven 本地存储库吗? 最后一个问题,每个开发人员应该使用maven(通过M2Eclipse)还是正常使用eclipse编译器来编译代码?

谢谢:)

最佳答案

我们的做法(我相信这是很常见的)是

  • 我们有自己安装的存储库管理器,例如 Nexus ,安装在内网某台机器上,供所有开发者使用
  • Jars 不会存储在 SCM 中,而是存储在 Nexus 或同等设备中。常见的安排是为外部依赖项提供一个存储库,为内部快照构建提供一个存储库,为内部发布构建提供一个存储库(每个项目)。我们在 Maven 配置中定义了 Maven 中央存储库以及内部存储库,将 Artifact 存储在相关的内部存储库(外部、内部发布或内部快照)中并从那里获取它们,但将中央存储库作为备份标准插件。
  • 存储库引用(定义、url)位于 Maven 设置文件中或 pom.xml 中。个人开发人员不需要做任何事情,他/她只需使用这些文件。 pom.xml 将在 SCM 中,设置文件可能存在也可能不存在。
  • Maven 在下载文件时还使用本地缓存,因此每个版本/机器仅下载一次文件,这应该使 NW 开销保持在可以承受的范围内。内联网存储库的部分目的也是为了减少外部网络开销。
  • Maven release plugin通常用于处理内部快照和内部发布存储库更新
  • 每个开发人员在他的机器上都有一个本地存储库缓存。这是一个标准的 Maven 功能。 Eclipse 可以引用这些相同的文件。
  • 可以借助 eclipse-maven 插件(其中 M2E 最常见)来编译代码,在命令行上使用 Maven,或者然后使用 Maven 生成常规 Eclipse 项目文件,然后正常使用 Eclipse。为此,我们使用命令行和 M2E+Eclipse。
  • SCM 将用于源代码、二进制文件存储库(包括 .jar)

关于eclipse - (Maven+Eclipse)每个开发人员如何在本地处理jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8843635/

相关文章:

java - Eclipse Luna 的 jigloo 插件

java - 本地 (Windows/IntelliJ) 和远程 (Linux) 之间的 Maven 构建有何差异?

java - 有没有办法告诉maven它应该执行哪个testClass

xml - 带有 Tiles 的 HTTP 404 Spring MVC 没有 XML

java - H2-内存数据库控制台未打开

json - Jersey 2 InjectLink 被忽略

android - 如何在主 .java 文件中添加另一个 Activity

java - 如何使用 Eclipse 将 GWT 项目导出为可执行 JAR 文件?

java - 运行opencv使用java报错

xml - Eclipse XML 格式化程序