2014-09-10 3 views
0
пути к классам

Setup:ANT - Как добавить скомпилированные классы динамически

Project A - Pure Java проект без каких-либо зависимостей.

Проект B - Чистый проект Java зависит от проекта А.

процесса:

У меня есть сценарий сборки проекта в каждой из корневой директории проекта и мастер-скрипт для запуска их обоих, в правильный порядок, сначала Project A, а затем Project B. Вывод сценария относительно пути каждого проекта.

Скрипт работает просто отлично для проекта А, но когда дело доходит до Project B он пропускает выходные классы проекта А.

Использование ANT, есть способ добавить «динамически» к компиляции classpath вывод ранее скомпилированного проекта?

Или, есть ли какое-либо действие, которое я могу предпринять, за исключением того, что явным образом предоставил Project B путь вывода классов для проекта A?

ответ

0

ОК, так что это взяло кучу взлома.

Первое использование add ant-contrib to your ant вы можете скачать его с here.

Затем я объявил var вместо свойства в моем основном скрипте муравья. В макросе компиляции я передал его в javac как classpath. После завершения компиляции я добавил новую выходную папку классов в classpath var и назвал следующую компиляцию.

Удачи.

Компиляция скрипт:

<?xml version="1.0"?> 
<project name="PDF Test Client" default="main" basedir="."> 
    <taskdef resource="net/sf/antcontrib/antlib.xml" /> 

    <macrodef name="Compile"> 
     <attribute name="ProjectName" default=" -- set aname to a 'ProjectName' property --" /> 
     <attribute name="ProjectRootDir" default="." /> 
     <attribute name="SourceDir" default="@{ProjectRootDir}/src" /> 
     <attribute name="OutputDir" default="@{ProjectRootDir}/output" /> 
     <attribute name="BuildDir" default="@{OutputDir}/bin" /> 
     <attribute name="ClassesDir" default="@{BuildDir}/classes" /> 

     <sequential> 
      <echo message="Compiling... @{ProjectName}" /> 
      <mkdir dir="@{ClassesDir}" /> 
      <javac srcdir="@{SourceDir}" destdir="@{ClassesDir}" classpath="${ClassPathFolders}" includeantruntime="true" /> 
      <var name="ClassPathFolders" value="${ClassPathFolders}; @{ClassesDir}" /> 
      <echo message="-" /> 
     </sequential> 
    </macrodef> 

    <target name="main"> 
    </target> 

</project> 
Смежные вопросы