当前位置: 首页 > 面试题库 >

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

齐招
2023-03-14
问题内容

我的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蚂蚁,该文档对我没有太大帮助。我在几个地方看到它说有各种各样的排除/排除元素/属性,但是我能想到的每一种变化都没有效果,或者导致诸如“ 等等
不支持’排除’属性”之类的错误。


问题答案:

几个人建议使用<exclude>。这与指定我的任务的方式不兼容。垃圾桶的答案链接到此页面上的第六个示例,这使我对如何重组任务规范有了一个想法。

看来我的问题与我指定源文件的方式有关。而不是像这样<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/**"/>

(实际上,我惊讶的是最初存在的功能根本无法工作。)



 类似资料:
  • Ant Javac任务用于编译Java源文件。 它扫描源和目标目录以编译源文件,只在不存在或比Java文件旧时才编译。 如果Java源文件位于任何包中,则源文件应具有目录层次结构。 1. Apache Ant Javac属性 属性 描述 必需 源Java文件 是 存储类文件的目标 否 必须包含的文件模式列表 否 文件的每一行都被视为包含模式 否 必须排除的文件模式列表 否 文件的每一行都被视为排除

  • 我的项目是用Maven构建的。我很高兴和Maven一起建造。现在,我需要用Ant构建它(我希望我不需要!!!)。我希望使用现有的maven依赖项——也就是说,希望保留pom进行依赖项管理。 所以,我写了这个任务: 但是,ant编译输出抱怨mypomdeps指向的库(在jars中)丢失了。 javac无法看到我想要的类路径的原因是什么? 我是否正确使用了由工件:依赖项生成的filesetId? 我的

  • 此任务用于删除单个文件,目录或子目录。 还可以通过指定文件集来删除文件集。 默认情况下它不会删除空目录,需要使用属性来删除空目录。 它具有下面列出的各种属性。 1. Apache Ant删除任务属性 属性 描述 必需 要删除的文件 资源(文件,目录) 要删除的目录 资源(文件,目录) 是否显示每个已删除文件的名称 否 如果资源不存在,则不显示任何消息 否 无法删除资源时显示错误 否 也删除空目录

  • 问题内容: 我面临一个问题。我在机器上重命名,并注意到任务仍然可以正常工作。 有人知道从哪里获取吗? 问题答案: 实际上,我相信默认情况下,Ant会尝试直接使用以下代码执行Java编译器类: 代码来自这里 。 这意味着,如果库tools.jar位于Ant的当前类路径上,它将拾取该类并启动它。这导致javac.exe可以重命名为您想要的任何名称,它仍然可以工作。因此,要回答您的问题,它实际上不执行任

  • 当我运行我的ant任务时,我得到以下错误 /build.xml:61:问题:无法创建任务或类型javac原因:找不到类org.apache.tools.ant.taskdefs.javac。操作:检查组件是否已正确声明,并且实现JAR是否位于以下目录中:-/idea-ic-107.587/lib/ant/lib-/home/.ant/lib-在命令行中添加了-lib参数的目录 但是我在上面提到的路

  • 问题内容: 我已经使用JavaFX制作了GUI,并且有三个单选按钮,一旦用户单击“提交”并创建了另一个线程,并且根据检查的单选按钮,该线程将运行所需的输出并将结果输出到控制台。 但是,当线程正在运行时(一个过程大约需要30秒才能完成),我可以检查任何单选按钮。为此,它创建另一个线程,并与其他正在进行的线程长时间输出。所以我的输出盒简直是一团糟!我正在查看 异步 任务,但不确定是否与此相关。 这是我