мультимодульный проект ant не распознает jar classpath - PullRequest
0 голосов
/ 20 марта 2020

У меня следующая структура / проект сборки муравья и возникают сложности при компиляции проектов дочерних модулей. Когда я компилирую проекты отдельно, это работает, но при попытке из основного файла сборки компиляция не удалась. Действительно застрял с этим. Пожалуйста, помогите.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...