java 如何使用 Ant 将整个 lib 目录(包括所有子目录)放在类路径上?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1893793/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-29 18:24:53  来源:igfitidea点击:

How do I put the entire lib directory (including all subdirectories) on the classpath using Ant?

javaantbuildclasspath

提问by mhaller

I'm not sure this is the problem, but it looks like it might be the case. I'm getting build errors telling me that certain packages don't exist. These packages are packages that exist in .jar files within my lib directory. Any other packages within my java source files that I'm compiling and copying to the classes directory are working just fine. Here are some of the basics of my Ant build script related to this issue:

我不确定这是问题所在,但看起来可能是这样。我收到构建错误,告诉我某些包不存在。这些包是存在于我的 lib 目录中的 .jar 文件中的包。我正在编译并复制到 classes 目录的 java 源文件中的任何其他包都可以正常工作。以下是与此问题相关的 Ant 构建脚本的一些基础知识:

<property name="app.name" value="myapp" />
<property name="base.dir" value="${basedir}" />
<property name="build.dir" value="${base.dir}/build" />
<property name="build.webinf.dir" value="${build.dir}/WEB-INF" />
<property name="build.classes.dir" value="${build.webinf.dir}/classes" />
<property name="build.lib.dir" value="${build.webinf.dir}/lib" />
<property name="catalina.dir" value="C:\Program Files\Apache Software Foundation\apache-tomcat-5.5.28" />
<property name="catalina.lib.dir" value="${catalina.dir}/shared/lib" />
<property name="config.dir" value="${base.dir}/config" />
<property name="dist.dir" value="${basedir}/dist"/>
<property name="lib.dir" value="${base.dir}/lib" />
<property name="src.dir" value="${base.dir}/src" />
<property name="www.dir" value="${base.dir}/www" />

<path id="compile.classpath">
    <fileset dir="${lib.dir}">
        <include name="*.jar" />
    </fileset>
    <pathelement location="${catalina.dir}/common/classes" />
    <fileset dir="${catalina.dir}/common/endorsed">
        <include name="*.jar" />
    </fileset>
    <fileset dir="${catalina.dir}/common/lib">
        <include name="*.jar" />
    </fileset>
    <pathelement location="${catalina.dir}/shared/classes"/>
    <fileset dir="${catalina.lib.dir}">
        <include name="*.jar" />
    </fileset>
</path>

<target name="init">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${build.webinf.dir}" />
    <mkdir dir="${build.classes.dir}" />
    <mkdir dir="${build.lib.dir}" />
    <mkdir dir="${dist.dir}" />
    <mkdir dir="${src.dir}" />
</target>

<target name="prepare_www_dir" description="Copies all static web content onto the build path.">
    <copy todir="${build.dir}">
        <fileset dir="${www.dir}"/>
    </copy>
</target>

<target name="prepare_lib_dir" description="Copies all libraries onto the build lib path.">
    <copy todir="${build.lib.dir}">
        <fileset dir="${lib.dir}" includes="**/*.jar" />
    </copy>
</target>

<target name="compile" depends="init,prepare_www_dir,prepare_lib_dir" description="Compiles source code, and copies it onto the build class path.">
    <javac srcdir="${src.dir}" destdir="${build.classes.dir}">
        <classpath refid="compile.classpath" />
    </javac>
</target>

回答by mhaller

<fileset dir="${lib.dir}">
    <include name="**/*.jar" />
</fileset>