Ant 将java库包含到自己的库中

Ant 将java库包含到自己的库中,ant,java,Ant,Java,我为自己创建了一个小框架,我想在多个项目中使用它。我还希望分布式jar文件包含所有外部库,这样我的项目只需要包含我的库就可以访问所有外部库 我需要它来简化外部库的更新 所以我把它放在build.xml中,它将dist/lib中的所有库添加到我自己的jar文件中 <target name="-post-jar"> <!-- Include all java libraries --> <fileset dir="dist/lib" id="exte

我为自己创建了一个小框架,我想在多个项目中使用它。我还希望分布式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”这样的外部库时,我得到了一个错误,即找不到这个库


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

取决于IDE…如果您使用的是Eclipse,那么很容易…转到属性->构建路径,然后添加库…

取决于IDE…如果您使用的是Eclipse,那么很容易…转到属性->构建路径,然后添加库…

您可以发布一个工件,然后框架的用户可以使用它,而不必自己包含依赖项——您的pom就足够了

如果你想创建一个“全合一”的人工制品,请考虑类似或Maven的创建一个没有外部依赖性的jar。

< P>你可以发布一个工件,你的框架的用户可以在不必包含依赖项的情况下使用你的POM就足够了。

如果要创建一个“全合一”的工件,请考虑类似或Maven的创建一个没有外部依赖项的jar。

< P>标准的类加载器无法在JAR内找到一个类文件。您必须将每个jar添加到类路径,而不是嵌套jar


顺便说一句,允许嵌套jar可能是个坏主意:每个项目都会有6到7个commons lang或log4j版本,因为许多库依赖于它们。

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

顺便说一句,允许嵌套JAR可能不是一个好主意:每个项目最终都会有6到7个commons lang或log4j版本,因为许多库依赖于它们。

您可以使用或。 如果您使用maven,您可以使用maven汇编插件。

您可以使用或。
如果您使用maven,您可以使用maven汇编插件。

使用像maven这样的外部依赖关系管理工具。使用像maven这样的外部依赖关系管理工具。我使用NetBeans,添加库也有类似的属性,但我希望我的项目能够访问我自己的库项目中包含的所有库。我相信OP是询问在构建的jar中包含依赖库。将jar添加到IDE中的构建路径不会自动将它们包含在构建jar中。是的,这就是重点。但我也希望能够访问我的项目中的库。我使用NetBeans,并且有一个类似的属性用于添加库,但我希望我的项目能够访问我自己的库项目中包含的所有库。我相信OP是在询问在构建的jar中包含依赖库。将jar添加到IDE中的构建路径不会自动将它们包含在构建jar中。是的,这就是重点。但是我也希望能够访问我项目中的库,我认为使用maven对于我的需求来说太过分了。我现在正在试用OneJar,但我现在还不能让它工作……我认为使用maven对我的需求来说太过分了。我现在正在试用OneJar,但直到现在我才让它工作……我目前正在试用OneJar,胖Jar似乎是一个Eclipse插件,但我使用NetBeans;-)我目前正在尝试OneJar,Fatjar似乎是一个Eclipse插件,但我使用NetBeans;-)这是一个很好的观点,我必须考虑一下。我只想能够向我的项目中添加一个库,这个库应该可以拖入所有依赖项。这就是Maven(和Ivy)的全部内容:管理依赖项。我个人发现使用Maven通常比自己处理依赖项更难,但是YMMV。这是一个很好的观点,我必须考虑一下。我只想能够向我的项目中添加一个库,这个库应该可以拖入所有依赖项。这就是Maven(和Ivy)的全部内容:管理依赖项。我个人发现使用Maven通常比自己处理依赖项更难,但是YMMV。