2014-09-10 67 views
0

設置:ANT - 如何追加編譯的類類路徑的動態

A計劃 - 不依賴純Java項目。

項目B - 純Java的項目依賴於項目A.

過程:

我在每個項目根目錄和主腳本構建項目腳本來運行他們兩個,在正確的順序,首先是項目A,然後是項目B.腳本輸出是相對於每個項目的路徑。

該腳本就好了A計劃,但是當涉及到項目B它忽略了項目A.

類輸出使用Ant,是有辦法加上「動態」到編譯classpath之前的編譯項目的輸出?

或者,除了明確提供項目B類項目A的輸出路徑外,是否可以採取任何行動?

回答

0

好的,所以這花了一堆黑客。

首先使用add ant-contrib to your ant你可以從here下載它。

然後我在我的主要ant腳本中聲明瞭一個var而不是屬性。 在編譯宏中,我將它作爲類路徑傳遞給javac。 編譯完成後,我將新的類輸出文件夾附加到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>