首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ant: javac with proc:only from Ant?

Ant: javac with proc:only from Ant?
EN

Stack Overflow用户
提问于 2012-08-08 13:55:12
回答 1查看 899关注 0票数 3

有没有办法强制javac任务只调用批注处理,而不进行编译。根据javac documentation的说法,-proc:only javac option应该可以强制执行这样的行为。

但以下是ant构建文件的片段:

代码语言:javascript
复制
<target name="apt">
    <javac srcdir="src" destdir="bin" includeantruntime="false">
        <compilerarg value="-proc:only"/>
    </javac>
</target>

无论如何都要编译项目。我尝试了其他的<compilerarg>标签版本(例如line而不是value),但是没有任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-06-13 08:27:03

避免指定任务的"destdir“属性,或者使用空目录作为类文件的目标。然后,Ant "javac“任务将在基目录(如果未设置"destdir”)或空目录中查找类文件。因为它不会在那里找到类文件,所以它不会从编译中排除潜在的最新源代码,并在"srcdir“属性中指定的目录中的源代码上执行"javac”。

因此,您的代码将如下所示:

代码语言:javascript
复制
<target name="apt">
    <javac srcdir="src" includeantruntime="false">
        <compilerarg value="-proc:only" />
    </javac>
</target>

或者,如果使用空目录方法,如下所示:

代码语言:javascript
复制
<target name="apt">
    <mkdir dir="empty" />
    <javac srcdir="src" destdir="empty" includeantruntime="false">
        <compilerarg value="-proc:only" />
    </javac>
</target>

第二种方法稍微复杂一些,但是更干净一些。通常,您的项目将有一个输出目录,您可以在其中放置已编译的类和打包的jars,因此在其中添加一个额外的空目录不会有什么坏处。从Ant版本1.9.4开始,我还没有找到任何其他独立于编译从Ant进行批注处理的方法,尽管"javac“任务中的一个简单的"force”属性就可以解决这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11858444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档