将java库包含到自己的库中

时间:2011-12-16 18:03:11

标签: ant java

我为自己创建了一个小框架,我希望在多个项目中使用它。我还希望分布式jar文件包含所有外部库,以便我的项目只需要包含我的库来访问所有外部库。

我需要这个来简化外部库的更新。

所以我将它放在我的build.xml中,它将dist / lib中的所有库添加到我自己的jar文件中。

<target name="-post-jar">  
    <!-- Include all java libraries -->
    <fileset dir="dist/lib" id="extern.libs">
        <include name="*.jar" />
    </fileset>

    <!-- Add the libraries from the fileset to the project.jar -->
    <jar jarfile="${dist.jar}" update="true">  
        <zipgroupfileset refid="extern.libs"/>
    </jar>  
</target>  

但是当我尝试使用像“org.zkoss.zk.ui.Component”这样的外部库时,我得到了无法找到此库的错误。

有没有更好的方法将外部库包含到我自己的库中,以便我的项目可以使用它们?

4 个答案:

答案 0 :(得分:2)

您可以发布Maven工件,然后您可以使用框架的用户,而无需自己包含依赖项 - 您的pom就足够了。

如果你想创建一个&#34;一体化&#34;工件,考虑像OneJarjarjar或Maven的Shade plugin之类的东西来创建一个没有外部依赖关系的jar。

答案 1 :(得分:1)

标准类加载器在jar内部找不到类文件。您必须将每个jar添加到类路径中,而不是嵌套jar。

顺便说一句,允许嵌套jar可能是一个坏主意:你最终会在每个项目中使用6或7个版本的commons-lang或log4j,因为很多库都依赖于它们。

答案 2 :(得分:1)

您可以使用One-jarFat Jar。 如果你使用maven,你可以使用maven-assembly插件。

答案 3 :(得分:0)

取决于IDE ...如果您使用的是Eclipse,那么它非常简单...转到Properties-&gt; Build Path然后添加库......