Java Ant作业如何随我的jar一起发布Log4j jar

Java Ant作业如何随我的jar一起发布Log4j jar,java,jar,ant,log4j,Java,Jar,Ant,Log4j,我只是想升级一些旧东西,其中一部分我需要打包使用Log4j的定制jar。我确实为成功编译的任务添加了以下内容 <path id="my.classpath"> <fileset dir="${mainpath}"> <include name="**/*log4j*.jar"/> </fileset> </path> <javac srcdir="src/java" destdir="bu

我只是想升级一些旧东西,其中一部分我需要打包使用Log4j的定制jar。我确实为成功编译的
任务添加了以下内容

<path id="my.classpath">
    <fileset dir="${mainpath}">
        <include name="**/*log4j*.jar"/>
    </fileset>
</path>

    <javac srcdir="src/java" destdir="build/filez/java" debug="on" deprecation="no"
           includes="my/instruments/**/*, org/apache/log4j/**/*">
        <classpath refid="my.classpath"/>
    </javac>

然而,在我的
工作中,我看不到任何
log4j
依赖项与我的定制jar打包在一起。这可能是一个愚蠢的问题,但是如何确保我的自定义jar在从另一个应用程序调用时不会失败,因为依赖项没有打包?只要目标应用程序中的classloader已经加载了log4j,就可以了吗

此外,我是否需要为此在清单中添加一些内容

我暂时无法使用Maven(是的,我知道),因此无法用Maven解决此问题您可以使用它将代码及其依赖项打包到一个大的可执行JAR中

它既可以作为命令行中的独立工具使用,也可以作为build.xml中定义的任务使用

<!-- Construct the One-JAR file -->   
<one-jar destfile="hello.jar" manifest="hello.mf">
    <main>
        <!-- Construct main.jar from classes and source code -->
        <fileset dir="${classes.dir}/src"/>
    </main>
    <lib>
        <fileset file="${build.dir}/lib.jar" />
    </lib>
</one-jar>


如果要在jar中包含一个文件,该文件由
jar
任务控制,而不是
javac
。您是否需要在jar中包含log4j取决于它是运行时依赖项还是编译时依赖项!!请回答一个问题!我需要在舱单上添加什么吗?我正在向这个one-jar中添加一个名为'my manifest.MF'的清单。除了主类之外,我什么都没有!这不是Ant的一部分-这是自定义的东西?这是一个外部Ant任务,将它们用于Ant本身没有内置的功能是很常见的