如何在Ant构建任务中将捆绑的jar添加到类路径中?

时间:2018-12-10 15:39:15

标签: java eclipse ant eclipse-plugin osgi

我在Eclipse中有一个插件项目。我想用ant编译我的代码。现在,我需要在我的类路径中添加一个jar,它的类路径中也有几个jar。有几个导出的软件包,它们是编译代码所必需的。当我将此jar添加到我的依赖项并使用Eclipse运行代码时,一切正常。但是蚂蚁不知何故找不到所需的进口。捆绑包testfxplugin.jar的清单:

Manifest-Version: 1.0
Automatic-Module-Name: dummyjar
Bundle-SymbolicName: dummyjar
Export-Package: com.sun.glass.ui.monocle,org.hamcrest,org.hamcrest.cor
 e,org.hamcrest.internal,org.testfx.api,org.testfx.assertions.api,org.
 testfx.assertions.impl,org.testfx.framework.junit,org.testfx.internal
 ,org.testfx.matcher.base,org.testfx.matcher.control,org.testfx.osgi,o
 rg.testfx.osgi.service,org.testfx.robot,org.testfx.robot.impl,org.tes
 tfx.service.adapter,org.testfx.service.adapter.impl,org.testfx.servic
 e.finder,org.testfx.service.finder.impl,org.testfx.service.locator,or
 g.testfx.service.locator.impl,org.testfx.service.query,org.testfx.ser
 vice.query.impl,org.testfx.service.support,org.testfx.service.support
 .impl,org.testfx.toolkit,org.testfx.toolkit.impl,org.testfx.util
Bundle-Name: Dummyjar
Bundle-Version: 1.0.0.qualifier
Bundle-ClassPath: libs/openjfx-monocle-8u76-b04.jar,libs/testfx-core-4
 .0.15-alpha.jar,libs/testfx-junit-4.0.15-alpha.jar,.,libs/org.hamcres
 t.core_1.3.0.v201303031735.jar
Class-Path: libs/openjfx-monocle-8u76-b04.jar,libs/testfx-core-4
 .0.15-alpha.jar,libs/testfx-junit-4.0.15-alpha.jar,.,libs/org.hamcres
 t.core_1.3.0.v201303031735.jar
Bundle-ManifestVersion: 2
Bundle-RequiredExecutionEnvironment: JavaSE-1.8

这是蚂蚁目标:

<path id="classpath.test">
    <pathelement location="${test.lib}/testfxplugin.jar" />
    <pathelement location="${test.lib}/junit-4.9.jar" />
</path>

<target name="test-compile">
    <mkdir dir="${test.build}"/>
    <javac srcdir="${test.src}" destdir="${test.build}" includeantruntime="false">
        <classpath refid="classpath.test" />
    </javac>
</target>

1 个答案:

答案 0 :(得分:0)

如@ greg-449所述,您将必须添加所有必需的jar作为classpath的一部分。 像这样:

<classpath>
  <fileset dir="lib">
    <include name="**/*.jar"/>
  </fileset>
</classpath>

这只是一个包含多个(通配符条目)jar的示例。您可以在Path-like Structures

上了解更多信息

这基本上是一个传递依赖,即您的依赖具有自己的依赖。那就是可以使用Maven的地方,它会自动处理此类依赖性。有关更多信息,请点击此处:Maven Transitive Dependencies