构建脚本找不到属性文件中定义的路径元素



我有一个ant构建脚本,具有以下目标:

<target name="_initLiveProps">
        <property file="buildscripts/live.properties"/>
</target>
<target name="buildLive"  depends="_initLiveProps">
        <property file="buildscripts/live.properties"/>
</target>
在构建脚本中,我声明了几个路径元素,如下所示:
<path id="project.class.path">      
        <pathelement location="./../lib/log4j-1.2.16.jar" />
        <pathelement location="${product-def.jar}"/>
</path>

product- define .jar定义在buildscripts/live中定义。属性文件

product-def.jar=./../lib/product-def/live/product-def.jar

当我构建项目时(使用ant buildLive),我得到编译错误,主要是因为它找不到在product- define .jar中定义的类。

我试着打印出如下所示的类路径

<property name="myclasspath" refid="project.class.path"/>
<echo message="${myclasspath}" />

输出为c:productliblog4j-1.2.16.jar;c:product${product-def.jar}

以上说明下列定义是不正确的

<pathelement location="${product-def.jar}"/>

定义在属性文件中定义的路径元素的正确方法是什么?

编辑

我认为问题是project.class.path的定义在buildLive目标中加载属性文件之前被初始化。是否有一种方法可以延迟project.class.path的初始化,直到buildLive目标完成之后?

是否有办法延迟project.class.path的初始化,直到buildLive目标完成后?

<path>定义放入<target>

<target name="_initLiveProps">
        <property file="buildscripts/live.properties"/>
        <path id="project.class.path">      
                <pathelement location="./../lib/log4j-1.2.16.jar" />
                <pathelement location="${product-def.jar}"/>
        </path>
</target>

<path>将对(直接或间接)依赖于此的所有目标可见。

如果你有几个不同的目标加载不同的属性,例如_initLiveProps, _initDevProps等,那么你可以把<path>的定义放入一个共同的目标中,如下所示

<target name="classpath">
        <path id="project.class.path">      
                <pathelement location="./../lib/log4j-1.2.16.jar" />
                <pathelement location="${product-def.jar}"/>
        </path>
</target>
<target name="_loadLiveProps">
        <property file="buildscripts/live.properties"/>
</target>
<target name="_initLiveProps" depends="_loadLiveProps, classpath" />
<target name="_loadDevProps">
        <property file="buildscripts/dev.properties"/>
</target>
<target name="_initDevProps" depends="_loadDevProps, classpath" />

相关内容

  • 没有找到相关文章

最新更新