繁体   English   中英

使用Apache Ant设置具有依赖项的注释处理器

[英]Setting up Annotation Processor with Dependencies using Apache Ant

我有一个依赖于其他库(例如Guava,Commons)的注释处理器。 我已经使用Eclipse和Maven进行了设置。 但是,我想将其与Apache Ant的构建文件一起使用。 因此,我创建了以下目标:

<target name="compile.frontend" depends="compile.main">
    <mkdir dir="${target}target/frontend/classes" />
    <javac encoding="utf-8" destdir="${target}target/frontend/classes" debug="on" nowarn="true" source="1.6" target="1.6" optimize="on" includeantruntime="false">
        <src path="src/application/java"/>
        <classpath>
            <fileset dir="lib">
                <include name="main/*.jar" />
            </fileset>
            <pathelement location="${target}target/main/classes" />
        </classpath>
        <compilerarg line="-processorpath ${basedir}/lib/main/MyProcessor-1.0.jar;${basedir}/lib/main/javapoet-1.7.0.jar;${basedir}/lib/main/guava-17.0.jar;${basedir}/lib/main/commons-lang-2.6.jar"/>
        <compilerarg line="-processor com.me.MyProcessor"/>
        <compilerarg line="-s ${target}target/frontend/classes/"/>
    </javac>
</target>

我得到的错误是我实例化的处理器生成的类丢失了,“找不到符号”。

我用“;”添加的依赖项 分隔列表与我使Eclipse正确使用处理器的依赖项相同。 我怀疑从输出文件夹<compilerarg line="-s... ,因为当我删除依赖项(即JavaPoet)时,我得到了JavaPoet的“ java.lang.NoClassDefFoundError”。

问题是关于在javac行下使用exclude name进行某些目录排除:

<exclude name="**/folder_name/**"/>

也无需像我在原始问题上所做的那样添加compilerarg line 将libs放在classpath下就足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM