2012-07-18 10 views
6

Muszę skompilować mój kod źródłowy, aby był zgodny z jre 1.6. Jednak gdy spróbuję ustawić atrybut kompilatora zadania javac na javac1.6, ant nadal skompiluje mój kod za pomocą javac1.7. Próbowałem również ustawić wersję kompilatora na "nowoczesną" i to nie pomogło.Jak zmienić kompilator Ant na JDK 1.6

<target name="compile-tests"> 
    <javac compiler="javac1.6" includeantruntime="false" srcdir="${test.dir}" 
    destdir="${build.dir}" > 
     <classpath refid="class.path" /> 
    </javac> 
</target> 

Moja JAVA_HOME jest ustawiony na JDK 1.6:

echo $JAVA_HOME </code> gives: <code> 
/usr/lib/jvm/java-6-openjdk-amd64/ 

Moja wersja jest mrówka: Apache Ant (TM) w wersji 1.8.2

Według this post, mrówka używa własnego kompilatora . Jak zastąpić domyślną mrówkę? Ponadto, zgodnie z this post i dokumentacją ant, mogę ustawić globalną właściwość build.compiler. Co mam ustawić tę własność i jak mogę to zrobić?

Odpowiedz

5

myślę Ant compiler atrybut jest po prostu wiedzieć, jakie właściwości są obsługiwane przez kompilator. W javac ogólnie atrybut lub opcja do przekazania do kompilatora to target.

Nie musisz nawet mieć zainstalowanego kompilatora Java 6.

+0

"Nie powinieneś nawet instalować kompilatora Java 6." ? –

+0

@BlessedGeek Tak, powinieneś móc używać atrybutu 'target', jeśli masz Java 7, 8 lub (prawdopodobnie) nowsze wersje. – madth3

24

W zadaniu javac, spróbuj podać kompilator Javy przez ustawienie atrybutu executable następująco:

<property name="JDK1.6.dir" location="/usr/lib/jvm/java-6-openjdk-amd64" /> 
<property name="javac1.6" location="${JDK1.6.dir}/bin/javac" /> 

<target name="compile-tests"> 
    <javac executable="${javac1.6}" 
     fork="yes" 
     includeantruntime="false" 
     srcdir="${test.dir}" 
     destdir="${build.dir}" > 
    <classpath refid="class.path" /> 
    </javac> 
</target> 
+0

Dziękuję. Działa to w celu przesłonięcia kompilatora. Odpowiedziałeś na moje pytanie. – user847352

1

Użyj atrybutu "target" zadania javac Ant, aby zdefiniować wersję Java, z którą pliki klas mają być zgodne (tak ustaw w tym przypadku wartość "1.6"). Więcej szczegółów znajduje się w task documentation.

0

Mówiąc o podstawach Mrówki, ponieważ wymaga ona JVM do uruchomienia, wystarczy, że rozpozna ona JRE do tego celu. Jeśli jednak proces kompilacji wymaga kompilacji klas, będzie zależny od kompilatora Java i jeśli go nie znajdzie, to kompilacja się nie powiedzie.

Możliwe jest skonfigurowanie Ant do korzystania z jednego z kilku kompilatorów Java, jednak skupię się na javacu Oracle dla wyjaśnienia poniżej. Oto alternatywy ...

1) Jeśli JRE rozpoznany przez Ant do jego wykonania jest podkatalogiem pod JDK, podniesie się do poziomu JDK i zidentyfikuje wymagane zasoby.

2) Jeśli zmienna środowiskowa JAVA_HOME jest ustawiony wskazując na JVM (nie JRE) następnie mrówka będzie mógł skompilować artefakty Java

3) Alternatywnie, jak na Ant dokumentacji JAVACMD można ustawić w partii plik specyficzny dla systemu operacyjnego (antrc_pre.bat dla Windows) umieszczony pod twoim katalogiem domowym (a nie z Ant), wtedy rozpozna maszynę JVM. Uwaga: JAVACMD powinien odnosić się do pełnej ścieżki do pliku Java.exe w folderze bin, a nie do katalogu głównego JVM.

4) Alternatywnie linia komend Ant może pobrać listę bibliotek przy użyciu opcji -l opcji. Przekaż plik tools.jar do -l i będzie to wystarczające.

5) Ostatecznie atrybut widelca zadania JavaC można ustawić tak, jak wyjaśniono powyżej. Należy pamiętać, że wymaga to dużych zasobów i nie jest zalecany.

Powiązane problemy