2008-10-24 17 views
7

Sto provando a sovrascrivere gli attributi del compilatore Ant tramite la riga di comando in modo che tutte le attività "javac" utilizzino il mio compilatore specificato. Il problema che ho incontrato è che qualsiasi target che imposta il proprio valore per il compilatore sovrascrive quello impostato sulla riga di comando. Quindi, anche se sto inserendo il seguente comando.Sovrascrivere l'attributo del compilatore in un'attività Ant javac

ant -Dbuild.compiler=mycompiler 

qualsiasi bersaglio che ha il seguente sta per utilizzare il compilatore moderno, invece di mycompiler a causa di quel compilatore = attributo "moderna"

<javac srcdir="." 
     destdir="${classes.dir}/core" 
     compiler="modern" 
     encoding="UTF-8"> 
    <include name="org/**" /> 
    <include name="com/**" /> 
    <compilerarg line="${config.build.compilerarg}" /> 
</javac>  

Esiste un modo per ignorare questo dalla riga di comando , o sono bloccato modificando il file di build?

risposta

7

La Formica javac task documentation dice:

E 'possibile utilizzare diversi compilatori. Questo può essere specificato impostando la proprietà global build.compiler, che influirà su tutte le attività in tutta la build o impostando l'attributo del compilatore specifico per l'attività corrente. I valori validi per la proprietà sia build.compiler o l'attributo compilatore sono:

Sembra come se si può sia specificare la proprietà build.compiler globale o impostare un attributo specifico compilatore.

Così, sembra che è necessario modificare il file di build e:

  1. rimuovere l'attributo compilatore dalle chiamate javac e consentire l'impostazione globale build.compiler a cascata giù

  2. cambiamento dei valori dell'attributo compilatore da una stringa hard-coded compilatore = "moderna" di essere proprietà compiler = "$ {javac.compiler}"

Problemi correlati