У меня есть проект Java, Parent
, который зависит от подпроекта Child
(в форме JAR). Это Child
зависит от библиотек A
и B
, и те, которые связаны с Child
. Parent
также использует A
и B
(имеется в виду прямые вызовы, а не косвенные через Child
. Я хочу иметь возможность включать A
и B
JAR только один раз в мой проект.
Когда я компилирую Parent
, я получаю cannot find symbol
, когда он ссылается на библиотеки A
и B
. Я полагаю, что это потому, что Child
находится на пути времени компиляции, но по некоторым причинам библиотеки в нем нет.
Я использую муравей в качестве инструмента для сборки - есть ли что-то особенное, что я должен делать в моих тегах 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>
Это должно включать все jar-файлы, присутствующие в моей папке lib, но, похоже, не включает все jar-файлы внутри jar-файлов.