【问题标题】:Play!: Use different version of jar than local repository玩!:使用与本地存储库不同版本的 jar
【发布时间】:2013-04-01 21:22:24
【问题描述】:

玩!框架带有大量的 jar 库。我正在为我的 Play 使用 1.7 版的 apache commons-codec!应用。但是玩!已经随版本 1.4 和其他一些旧版本一起提供。我已将我的 commons-codec-1.7.jar 放在 lib 文件夹中,并“eclipsified”,因此 jar 文件位于类路径中。但是当我在 Eclipse 中展开 Project Explorer 时,我看到应用程序同时引用了 1.7 和 1.4 版本。我的问题是

  1. 如何从引用中删除 1.4 版?
  2. 为什么应用程序选择版本 1.4,即使版本 1.3 和 1.2 存在于 [PLAY_HOME]/repository/local 中
  3. 这是一个合作项目。我想确保一旦我在 git 中推送代码并且我的同事拉取它,他们不需要做同样的“hack”,只需“clean”和“compile”。怎么办?

顺便说一句,我正在使用 Play! 2.0.4

【问题讨论】:

    标签: jar playframework classloader


    【解决方案1】:

    commons-codec 添加到您的Build.scala 即可。依赖项将是正确的,因为指定的依赖项将覆盖默认的依赖项。

    val appDependencies = Seq(
      "commons-codec" % "commons-codec" % "1.7"
    )
    
    1. 您不必删除 1.4 版。 1.7 版现已生效。
    2. 这是由它们在类路径中的显示顺序引起的。
    3. play compile 会做到的。而且您将不得不再次使项目黯然失色。

    不要忘记从lib 文件夹中删除commons-codec。如前所述,它将自动下载并放入类路径中。

    【讨论】:

    • 谢谢。可能这是最好的解决方案。但是有没有办法避免编译时下载?我的意思是,如果我将文件保存在 lib 目录和 eclipsify 中,用户将从项目中获取 jar 文件,对吗?通过这种方式,他们将能够共享(可能通过拇指驱动器)和运行项目,而无需担心互联网连接。
    • @khalid 如果你这样做,你知道你也得到了所有的传递依赖。就我个人而言,我不喜欢将二进制文件添加到 VCS(在本例中为 git)。如果您愿意,添加到lib 将起作用,但正如我所说的传递依赖关系可能不正确。
    猜你喜欢
    • 2012-10-30
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2011-09-16
    • 2014-09-04
    • 1970-01-01
    相关资源
    最近更新 更多