0

在一个 ant 构建脚本中,我有一个我们依赖的项目列表。我需要为编译创建一个类路径。

我有:

included.projects=ProjectA, ProjectB

我需要:

included.project.classpath=../ProjectA/bin, ../ProjectB/bin

当前代码:

<echo message="${included.projects}" />

<pathconvert property="included.projects.classpath" dirsep="," >
      <map from="" to="../"/>
        <path location="${included.projects}"/>
    </pathconvert>

<echo message="${included.projects.classpath}" />

<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" source="1.6">
    <classpath>
        <pathelement path="${classpath}" />
        <dirset includes="${included.projects.classpath}" />
    </classpath>
</javac>

我也尝试过明确声明,但没有奏效:

<path id="modules.classpath"> 
  <fileset dir="../ModuleA/bin" /> 
  <fileset dir="../ModuleB/bin"/> 
</path> 
<path id="libraries.classpath"> 
  <fileset dir="lib" includes="*.jar"/> 
</path> 
<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" source="1.6"> 
   <classpath refid="libraries.classpath" /> 
   <classpath refid="modules.classpath" /> 
</javac>

我很好奇,显式声明代码有什么问题,是否可以使用逗号分隔字符串到类路径解决方案来解决。

4

1 回答 1

1

我认为在构建顶部显式声明类路径会更简单,如下所示:

<path id="compile.path">
   <fileset dir="../ProjectA/bin" includes="*.jar"/>
   <fileset dir="../ProjectB/bin" includes="*.jar"/>
</path>

使用如下:

<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" source="1.6">
    <classpath>
        <path refid="compile.path"/>
        <pathelement path="${classpath}" />
    </classpath>
</javac>

笔记:

  • 我再次阅读了您的问题,才意识到您没有使用其他项目构建的 jar 文件,是吗?....不是一个好主意....
于 2013-02-21T21:06:36.667 回答