gpt4 book ai didi

java - 使用 ant 编译嵌套 jar

转载 作者:行者123 更新时间:2023-12-01 15:39:26 24 4
gpt4 key购买 nike

我有一个 Java 项目,Parent,它依赖于 Child 子项目(以 JAR 的形式)。此 Child 依赖于库 AB,并且这些库与 Child 捆绑在一起。 Parent 也使用 AB (意味着直接调用,而不是通过 Child 间接调用。我希望能够在我的项目中仅包含一次 AB JAR。

当我编译Parent时,当它引用库AB时,我得到一个找不到符号 。我相信这是因为 Child 位于编译时路径上,但由于某种原因,其中的库不在编译时路径上。

我使用 ant 作为我的构建工具 - 我应该在嵌套 jar 的 javac 标签中做一些特别的事情吗?现在在 Parent 的 build.xml 中我有:

<target name="compile" depends="clean, makedir">
<javac
srcdir="${src.dir}"
destdir="${build.dir}"
includeantruntime="false"
classpathref="build.classpath">
</javac>
</target>

<path id="build.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
</path>

这应该包括我的 lib 文件夹中存在的所有 jar,但它似乎不包括 jar 中的所有 jar。

最佳答案

我假设 A.jarB.jar 是第三方库,而不是您自己构建的输出。

在这种情况下,解决此问题的一种方法是为第三方库创建一个项目或目录,然后供多个项目使用。在您所描述的环境中,您的Child 项目会将它们捆绑到自己的构建输出中,而Parent 项目将直接在其类路径上使用它们。

假设您在文件系统中与其他项目处于同一级别创建了第三方项目:

  thirdparty
lib
A.jar
B.jar
Parent
build.xml
src
Child
build.xml
src

在构建文件中,您可以定义第三方项目的位置:

<property name="thirdparty" value="../thirdparty"/>

并在路径中引用它:

<include name="${thirdparty}/lib/A.jar"/>
<include name="${thirdparty}/lib/B.jar"/>

关于java - 使用 ant 编译嵌套 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com