如何排除ant中的javac任务中的源代码?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我在我的build.xml中有以下内容:

<target name="compile.baz" depends="init">
   <javac destdir="${build.dir}/classes" debug="on">
      <compilerarg value="-Xlint:deprecation"/>
      <src>
         <pathelement location="${src.dir}/com/foo/bar/baz/" />
         <pathelement location="${src.dir}/com/foo/bar/quux/" />
         <!-- Need to exclude ${src.dir}/com/foo/bar/quux/dontwant/ -->
      </src>
      <classpath refid="classpath.jars" />
   </javac>
   ...
</target>

这主要是做我想要的,除了(如评论说)我希望在 ${src.dir}/com/foo/bar/quux/dontwant/这个任务编译文件(但我希望其他所有下面的${src.dir}/com/foo/bar/quux/任务编译此任务)。

我是一个完整的ant n00b,文档对我没有太大的帮助。我看到几个地方说它有各种排除/排除元素/属性,但是我能想到的每一个变化都没有效果,或者导致像“ blah不支持'排除'属性” 这样的错误。

提问于
用户回答回答于

看起来我的问题与我指定源文件的方式有关。而不是像这样使用a中的<pathelement>元素<src>

<src>
   <pathelement location="${src.dir}/com/foo/bar/baz/" />
   <pathelement location="${src.dir}/com/foo/bar/quux/" />
</src>

我转而使用一个单独<src>的路径,然后是一组<include>元素,如下所示:

<src path="${src.dir}" />
<include name="com/foo/bar/baz/**" />
<include name="com/foo/bar/quux/**" />

这看起来在功能上是相同的,但是可以兼容使用<exclude>

<exclude name="${src.dir}/com/foo/bar/quux/dontwant/**"/>
用户回答回答于

在我的实验中,不应该包含要排除的文件的完整路径。这一个不起作用:

<javac> (...> <exclude name="${src.dir}/com/foo/blah/blah1/FILENAME.java"/> (...) </javac>

但是这个确实如此:

<javac> (...> <exclude name="com/foo/blah/blah1/FILENAME.java"/> (...) </javac>

扫码关注云+社区