【问题标题】:Setting up Annotation Processor with Dependencies using Apache Ant使用 Apache Ant 设置具有依赖关系的注释处理器
【发布时间】:2016-08-17 12:15:59
【问题描述】:

我有一个依赖于其他库的注释处理器,例如番石榴,下议院。我已经用 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 正确使用处理器的依赖项相同。我怀疑来自输出文件夹&lt;compilerarg line="-s...,因为当我删除依赖项(即 JavaPoet)时,我得到了 JavaPoet 的“java.lang.NoClassDefFoundError”。有什么建议吗?

【问题讨论】:

    标签: java ant annotation-processing


    【解决方案1】:

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

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

    也不需要像我在原始问题中那样添加compilerarg lines。拥有类路径下的库就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-30
      • 2011-04-08
      • 2022-01-26
      • 2015-05-11
      • 2011-12-31
      • 2016-08-17
      • 2018-11-28
      • 1970-01-01
      相关资源
      最近更新 更多