如何让Netbeans自动将第三方jar从包含的类库复制到我的项目的dist/lib目录?

Una*_*ivi 12 netbeans class-library jar dependency-management netbeans-7.1

我在NetBeans 7.1中有一个Java应用程序(我们称之为myApp)依赖于Java类库项目[实际上不止一个],我保留了一些我在项目中共享的实用程序类.

这个类库项目(我们称之为myLib)取决于[许多]第三方库(例如apache-commons-younameit.jar).

我将myLib作为库包含在内,NetBeans的Ant脚本将myLib.jar拉入dist/libmyApp项目的目录中; 但是,myLib所依赖的jar不会与myLib一起被拉入,因此我的项目因缺少apache-commons-youtnameit.jar而获得运行时异常.

我想将myLib.jar和apache-commons-younameit.jar自动拉入myApp的dist/lib文件夹,这样我就不必手动检查所有库的依赖关系并将它们添加到我的主项目中.

  • 有没有一种明显的方法可以通过我缺少的NetBeans对话框实现这一目标?
  • 还是有必要手动调整我的build.xml?如果是这样,你能发布一个例子吗?(我对Ant没有那么好)

我想避免的是以下内容:

  1. 我需要添加一个新的实用程序库,从我的Java类库项目中挑选.
  2. 我查找了该库的库,使用了哪些罐子并将其写下来.
  3. 我回到我的主项目并添加那些第三方库(只有那些我尚未包含的库,直接用于我的主项目本身).

提前感谢您的帮助,或指导我朝着正确的方向前进.

Gre*_*eck 9

我发现了一种复制"依赖库依赖库"的方法,就像你在其中一篇评论中所说的那样.希望这会有所帮助.

<import file="nbproject/build-impl.xml"/>在行之后,将以下代码添加到NetBean项目的build.xml文件中.您需要在<fileset>下面的标签中填写正确的相对路径.

<!--Copy over any "dependant libraries' dependant libraries" -->
<target name="-post-jar">
    <echo>Copying over extra jars into PROJECTNAME</echo>
    <copy todir="./dist/lib">
        <!-- put in order from least important to most important to prevent file overwrites -->
        <fileset dir="path-to-other-nb-project/dist/lib"></fileset>
        <fileset dir="path-to-second-nb-project/dist/lib"></fileset>
    </copy>
</target>
Run Code Online (Sandbox Code Playgroud)

不是最干净的代码,但它解决了我的问题.在向主项目添加额外的依赖项目时,您需要手动更新它.


Pre*_*vić 5

这在Netbeans 7.3中对我有用:

右键单击项目并选择"属性",然后选择右侧的"库".

然后在"Libraries Folder"下单击"Browse ..."按钮: 属性对话框

然后选择你的lib文件夹,除非它已被Netbeans自动选择: 添加库文件夹对话框

然后单击"下一步","根据需要完成",当您返回"属性"对话框时,您应该: 属性对话框最终设置

之后,Netbeans应该将lib文件夹复制到dest中,最重要的是,它将引用主JAR中MANIFEST.MF文件中的所有库.

作为测试,查看lib文件夹中是否有新的CopyLibs文件夹.在CopyLibs里面应该有一个org-netbeans-modules-java-j2seproject-copylibstask.jar文件.Netbeans添加了这些,我认为,这是驱动将lib文件夹复制到dist的原因.