管理各种Java外部库的最优雅解决方案是什么?

时间:2009-09-15 21:22:43

标签: java eclipse netbeans jar libraries

也许我之前停止学习Java的原因是因为我 HATE Java如何处理外部库。我被困在一个地方,单独添加它们,修复版本控制问题以及每次移动/重命名它们,以及每次发布Java应用程序时反复复制和编写类路径。

所有这一切必须有一个优雅的解决方案。我将所有库(无论任务,平台或其他)保存在我的开发文件夹中“lib”文件夹中的自己的小文件夹中,有点像这样:

Dev
  -lib
    +JS-jQuery
    +Flex-Degrafa
    -Java-Xerces
      +Xerces-1.2.3
    +More libraries

我可以使用Netbeans或Eclipse for Java dev,但它们都没有提供管理所有这些的非常精简(而且更不用说防止白痴)的方式。

非常感谢正确方向的推动或在线文章/教程。

5 个答案:

答案 0 :(得分:7)

您可以使用Ant + IvyMaven来管理您的库依赖项。

答案 1 :(得分:6)

如果只是依赖管理,那么您对构建过程的其余部分感到满意​​,我会使用Ivy,因为它可以不显眼地管理您的依赖项,使您现有的构建过程保持不变。有一个名为IvyIDE的Eclipse插件,它通过类路径容器提供依赖项。

Maven 2具有更陡峭的学习曲线,但通过m2eclipseIAM为构建项目和Eclipse集成提供了更丰富的功能。

我个人使用Maven,因为我有很多项目可以使用,Maven特别适合在很多项目中进行高效开发。

查看介绍性文档,了解哪些内容适合您。

答案 2 :(得分:2)

Netbeans 6.7.1的Maven支持非常好,开箱即用IDE。

Eclipse插件非常令人沮丧,我再次尝试Netbeans。

除了ChssPly76的选项之外,第三个选择是将Ant与Maven Ant Tasks一起使用。我不知道我是否会将这些解决方案中的任何一个称为“优雅”,但它们确实使您无需管理自己的lib /目录和类路径变量。

答案 3 :(得分:1)

如果您正在使用Linux,则可以使用APT或RPM安装Java库。

否则,我通常会将预编译的JAR检查到项目版本控制存储库中的lib目录中,并确保JAR文件的名称包含完整版本信息。例如。 lib / foo-1.5.6.jar,而不是lib / foo.jar。

为避免在运行应用程序之前必须手动设置类路径,可以在JAR的Manifests中设置类路径,以定义每个JAR文件的依赖关系。加载类时,JVM将遵循所有依赖项。

答案 4 :(得分:0)

Maven通常比它的价值更麻烦,但是直接在诸如IntelliJ之类的IDE中打开maven项目的能力非常好。例如,IntelliJ将下载所有依赖项并使其可用,而无需先运行构建,或者使用mvn命令,然后再执行项目刷新。每次添加依赖项时,也没有必要重新生成项目。我与许多Eclipse开发人员合作,他们仅为此而切换到IntelliJ。

然而,Maven的一个缺点是许多库(或库的版本)在公共存储库中不可用。因此,通常需要设置本地存储库,例如archiva。在ant中,只需将其添加到存储库中的lib目录即可。

当你需要做一些maven不能通过插件直接支持的东西时,Maven也会攻击。什么通常是几行蚂蚁通常可以变成早上的工作。

最后,buildr是使用Maven依赖管理和插件的绝佳方式,同时也支持临时任务。