在ANT build.xml中,为什么我们不能在java任务中同时使用jar和classpath

时间:2011-02-25 05:45:30

标签: java ant

在ANT build.xml中,为什么我们不能在Java任务中同时使用jar和classpath?

2 个答案:

答案 0 :(得分:1)

除非我理解你的错误,否则你应该能够轻松地做到这一点。我假设你想在一个类路径中包含jar,在另一个文件夹中包含一组jar。

您可以这样做: -

<property name="classpath" value="./WEB-INF/lib"/>
<property name="dependency" value="./libs"/>
<path id = "my-classpath">
        <fileset dir = "${classpath}">
                <include name = "**/**.jar"/>
        </fileset>
        <fileset dir = "${dependency}">
                <include name = "**/**.jar"/>
        </fileset>      
</path>

<javac destdir="${build.dir}">
  <src path="${src.dir}"/>
  <classpath refid="my-classpath"/>
</javac>

修改

正如您还提到的java任务。下面的例子应该是你想要的。如果不是这样,请告诉我。

 <path id="project.class.path">  
     <pathelement location="somejar.jar"/>  
     <pathelement path="${java.class.path}/"/>  
     <pathelement path="${additional.dependencies}"/>  
 </path>  
 <java jar="test.jar" classpathref="project.class.path" ... />   

答案 1 :(得分:1)

我假设您的意思是java任务在使用jar属性时忽略您的类路径设置的原因。来自ant java docs

  

使用jar属性时,根据Sun's specification忽略所有类路径设置。

并从该链接:

  

使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置。

所以答案就是这样,因为它遵循规范。

如果这对您来说是个问题,您可以将相关的jar文件添加到类路径中,然后使用普通的classname属性指定要运行的类,或者如果您自己构建jar您可以在创建清单文件时向其添加Class-Path条目。 manifestmanifestclasspath任务在那里可能会有所帮助。