Ant javac任务无法编译。其“ srcdir”参数的行为与所记录的不同。这是一个错误吗?

时间:2018-07-24 14:03:09

标签: java build ant compilation javac

我写了下面粘贴的Ant脚本。它使用javac任务。 Apache文档指出scrdir参数用于指向源(.java)文件。但这也说明了javac任务可以使用模式集。

我相信javac任务中可能有错误,或者至少javac Ant任务的实现不佳。

在我的代码中,编译目标失败,因为找不到源文件。谁能解释为什么?

背景

我的项目的目录结构如下:

enter image description here

我的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已被定义为'。'

我知道如何使其工作:如果满足以下条件,目标将编译:

  1. 我如下所示更改了模式集:

    <patternset id="patternset.wm.adapter.sources">
        <include name="src/*.java"/>
        <exclude name=""/>
    </patternset>
    
  2. 在javac任务中,我将srcdir修改为:

srcdir="${proj.dir}"

但这是解决方法!为什么我的原始设置不起作用?

1 个答案:

答案 0 :(得分:0)

basedir在这里等于您的“ ant”子目录,这可能就是为什么它不起作用的原因。也许您想在顶部@SpringBootApplication public class GatewayApplication { @Bean DiscoveryClientRouteDefinitionLocator discoveryRoutes(DiscoveryClient dc, DiscoveryLocatorProperties dlp) { return new DiscoveryClientRouteDefinitionLocator(dc, dlp); } public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } }