У меня следующая структура / проект сборки муравья и возникают сложности при компиляции проектов дочерних модулей. Когда я компилирую проекты отдельно, это работает, но при попытке из основного файла сборки компиляция не удалась. Действительно застрял с этим. Пожалуйста, помогите.
Main_build
build.xml
build.properties
Sub_Project
Library_folder
Build_folder
build1.xml
build1.properties
My_project
Build_doler
build2.xml
Source_code_folder
build. xml
<project name=" Main_build" default="build.all" basedir="..">
<property file="${Main_build.basedir}/build.properties"/>
<import file="${Sub_Project.base.dir}/build/build.xml"/>
<target name="build.all" description="Builds all application" >
<antcall target=" Sub_Project.all">
<param name="basedir" value="${Sub_Project.base.dir}"/>
</antcall>
</target>
</project>
build.properties
Main_build.basedir=D:/myproject
Sub_Project.base.dir= ${Main_build.basedir}/Sub_Project
build1. xml
<project xmlns="antlib:org.apache.tools.ant" name=" Sub_Project " default="Sub_Project.all" >
<property file="build1.properties"/>
<include file="${Sub_Project.base.dir}/My_project/build/build2.xml" as="My_project"/>
<target name="Sub_Project.all" description="Build Sub_Project project" depends=" Sub_Project.My_project.all ">
<echo message="-----> Build all the Sub_Project project"/>
</target>
</project>
build1.properties
My_project.project.name= My_project
My_project.src.dir=${ Sub_Project.base.dir.base.dir}/${My_project.project.name}/src
My_project.output.dir=${ Sub_Project.base.dir.base.dir}/${My_project.project.name}/classes
build2. xml
<project xmlns="antlib:org.apache.tools.ant" name="My_project" default="My_project.all" basedir=".">
<path id="library ">
<pathelement location="Library_folder/required.jar"/>
</path>
<path id="classpath">
<path refid="library "/>
</path>
<target name="My_project.compile" description="Compile Java source files" >
<pathconvert property="classpathInName" refid="classpath" />
<echo message="-----> print jar classpath ${classpathInName}" />
<javac destdir="${My_project.output.dir }" classpathref="classpath" debug="${javac.debug}" nowarn="${javac.nowarn}"
deprecation="${javac.deprecation}" encoding="Cp1252" source="1.8" target="1.8" includeantruntime="false">
<src path="${My_project.src.dir}"/>
</javac>
</target>
Это файлы сборки, и когда я запускаю сборку из папки sub_project, все работает нормально, но когда я запускаю из Main_build В My_project происходит сбой компиляции папок, что говорит о невозможности найти классы из файла required.jar. Но <echo message="-----> print jar classpath ${classpathInName}" />
печатает правильное расположение файла jar в журналах. Почему ANT не может загрузить этот JAR-файл во время компиляции?
Это устаревший проект, и не разрешается изменять процесс сборки на любую другую сборку, например Maven или Gradle.