在ANT build.xml中,为什么我们不能在Java任务中同时使用jar和classpath?
答案 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
条目。 manifest
和manifestclasspath
任务在那里可能会有所帮助。