让Netbeans和Subversion很好地与图书馆一起玩?

时间:2008-11-13 13:12:30

标签: java svn netbeans

我很难弄清楚如何将一个.jar /库添加到Netbeans项目中,以便我可以将它提交到存储库。

添加库的典型方法(根据我已经完成的Netbeans文档)最终只是在我本地。检查我的项目的任何人最终错过了我所需的库。

手动插入并尝试解决Netbeans会导致Netbeans在尝试扫描项目时挂起...

那么,我怎么能告诉Netbeans选择一个jar作为库并将其包含在我的项目中,以便Subversion能够处理它?<​​/ p>

7 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题。

一个。定义库时,请使用公共位置的路径。每个人的计算机上的位置相同 - 例如,将第三方应用程序安装到Program Files或/ usr / local /中的JAR的位置运行良好或网络驱动器。

然后,当他们签出代码时,路径仍然是正确的,他们不必在他们的Netbeans工作区上定义库。

B中。编辑project.properties文件以使用相对路径。打开project.properties文件并查找“libs.LIBRARY_NAME.classpath=...”。如果未定义库,那将是“默认”位置。

更改此选项以使用相对于项目的路径并将jar文件存储在项目中。例如: libs.Log4J.classpath=lib/log4j.jar

请记住,库管理器中的库定义将覆盖此值 - 因此请确保将它们保持同步(即将版本号附加到库名称!)。

℃。使用Vincent建议使用Maven等构建系统。 Maven构建过程将负责下载依赖项等.Netbeans有几个流行的构建系统的插件。

答案 1 :(得分:2)

NetBeans 6.5中有一个新功能(项目中基于变量的路径),这可以使这更容易。

有关详细信息,请参阅 http://wiki.netbeans.org/NewAndNoteWorthyNB65#section-NewAndNoteWorthyNB65-VariableBasedPathsInJ2SEJ2EEProjects。请注意,屏幕截图包含库自定义程序中的变量引用。

答案 2 :(得分:1)

不是你的问题的答案,但是......通常你不应该在你的subversion存储库中包含这些库。通常不需要管理它们。你可能想要的是建立一个类似于maven所发生的中央存储库。如果使用maven,则可以在团队可访问的服务器上创建库的本地存储库。这些库的依赖项是在pom.xml文件中输入的,它位于subversion存储库中。现在,当团队成员从subversion中检出代码时,他们都可以访问maven存储库。

[我正在寻找对此的参考。当我找到它时,我会编辑这个答案。]

答案 3 :(得分:1)

我使用NetBeans IDE 6.5.1,到目前为止我找到的最佳解决方案是从本地主机中包含所需的库,然后将其路径更改为相对。之后,您必须从NetBeans file explorer手动删除库,然后再将它们从计算机中的操作系统位置手动复制到文件资源管理器。这样NetBeans就会检测到更改,您可以将其提交到存储库。


注意:我强烈建议您在更新后再次清理和构建项目。

答案 4 :(得分:1)

将lib / jars打包到项目中的简单方法,以便subversion“只处理它”,这样你就可以把所有附加的库准备好进行编译,然后将它们全部包含在项目目录下管理库文件夹的“共享库”选项。

创建新项目时,您可以指定“使用专用文件夹存储库”,然后使用建议的相对。\ lib路径。如果您有现有项目,则可以编辑它的属性,库类别和浏览库文件夹。再次首次运行将建议。\ lib然后提供将现有依赖项复制到该文件夹​​。这些图形操作应该提供与James Schek的'B'答案类似的结果。

使用。\ lib中新添加的lib提交项目,你应该能够从任何地方签出和构建,并且知道你将拥有与上次构建和提交时相同的库(在相同版本中)

我不知道这个功能在NetBeans中有多长时间。有关详细信息,请参阅:

http://netbeans.org/kb/docs/java/project-setup.html#projects-shared-libraries

答案 5 :(得分:0)

我最后只是下载了我自己的套装并将它们放在我的本地驱动器上。我设置我的Netbeans来看那里并警告其他人我做了什么......最终,我们将不得不做一些更具伸缩性的事情......: - )

答案 6 :(得分:0)

好的,我现在转移到的工作解决方案是从jar中提取类文件并将它们转储到Source Packages区域。然后它全部被提交到存储库,并且还避免在部署阶段处理单独的“lib”目录。

这个解决方案完成了我正在寻找的一切,但我觉得这样做真的很脏。它似乎可怕地破碎和错误......: - )