java - Ant javac 任务未编译。它的 'srcdir' 参数的行为不像记录的那样。这是一个错误吗?
问题描述
我已经编写了粘贴在下面的 Ant 脚本。它使用javac
任务。Apache 文档指出该scrdir
参数用于指向源 (.java) 文件。但它也解释了该javac
任务可以使用模式集。
我相信任务中可能存在错误,javac
或者至少可能是javac
Ant 任务的糟糕实现。
在我的代码中,编译目标失败,因为找不到源文件。谁能解释一下为什么?
背景:
我的项目的目录结构如下:
我的 ant 脚本在 ant 目录中。
源文件在 wm-adapter/src 中
<?xml version="1.0" encoding="UTF-8"?>
<project name="wm-adapter" default="dev" basedir=".">
<property file="Build.properties"/>
<property name="build.compiler" value="javac1.5"/>
<target name="compile" depends="prepare">
<!-- Define required FileSets and PatternSets... -->
<patternset id="patternset.wm.adapter.sources">
<include name="${source.dir}/*.java"/>
<exclude name=""/>
</patternset>
<fileset id="fileset.wm.adapter.sources" dir="${proj.dir}">
<patternset refid="patternset.wm.adapter.sources"/>
</fileset>
<!-- Compile... -->
<javac srcdir="${basedir}"
destdir="${classes.dir}"
classpath="${compile.classpath}"
debug="${javac.debug}"
verbose="true"
fork="true"
source="1.5"
target="1.5">
<patternset refid="patternset.wm.adapter.sources"/>
</javac>
<echo message=" Compilation completed successfully!"/>
</target>
这是属性文件的一个片段:
# DEFINE DIRECTORY STRUCTURE...
proj.dir=../wm-adapter
source.dir=${proj.dir}/src
build.dir=${proj.dir}/build
classes.dir=${build.dir}/classes
dist.dir=${proj.dir}/dist
lib.dir=../lib
docs.dir=${proj.dir}/documentation
resources.dir=${proj.dir}/www
config.dir=${proj.dir}/config
# DECLARE ANY OTHER WORKING DIRECTORIES...
tmp.jar.dir=C:\\Temp
tmp.app.dir=${tmp.jar.dir}/FATCA_WM_Adapter
# Name the jar file...
jar.file=FATCA_WM_Adapter.jar
# IMPORT EXTERNAL JARS INTO OUR CLASSPATH...
compile.classpath=${g11nutils.jar};${javax.ejb_3.0.jar};${middleware_UTILS.jar};${wmbrokerclient.jar};${classes.dir}
compile.classpath=${classes.dir};${lib.dir}
basedir 已被定义为 '.'
我知道如何使它工作:目标将在以下情况下编译:
我对模式集进行了更改,如下所示:
<patternset id="patternset.wm.adapter.sources"> <include name="src/*.java"/> <exclude name=""/> </patternset>
在 javac 任务中,我修改
srcdir
为:
srcdir="${proj.dir}"
但这是一个修复!为什么我的原始设置不起作用?
解决方案
这里的 basedir 等于你的“ant”子目录,这可能是它不起作用的原因。也许你想<project basedir="..">
在顶部。
推荐阅读
- jsonata - 将数组包装在 JSONata 中的数组中
- dialogflow-es - Dialogflow 意图不再与现有实体参数匹配
- python - 二进制数据上的 Pandas Datframe sort_values
- docker - 在 Docker 中构建干净的 Go 应用程序
- codeigniter - Codeigniter mkdir:权限被拒绝错误
- awk - awk 中是否有任何 if 语句来比较文件中的 greped 单词?
- php - 输出结果与 SUM 计数
- android - 如何在 Html.fromHtml 中显示链接(如果它们位于
元素?
- python-3.x - Selenium - 登录 Facebook 导致 Web 驱动程序无限期停止
- apache - nginx 反向代理 + apache 不会显示图像