2016-11-11 2 views
3

Ich bin ziemlich neu, sowohl Ant und das Java 9-Modul-System, also bitte mit mir ertragen. Ich arbeite daran, ein vorhandenes Ant-Projekt zu portieren, um Java 9 zu verwenden, und damit kommt die Verwendung von Modulen hinzu.Verwendung von Java 9-Modul-System mit Ant

Insbesondere jetzt I 2 verschiedene Module haben, eine, die andere erfordert, wie folgt:

../project/foo/src/org/bar/foo/module-info.java 
module org.bar.foo { 
    ... 
    exports org.bar.foo 
} 

../project/baz/src/org/bar/baz/module-info.java 
module org.bar.baz { 
    requires org.bar.foo 
} 

Während eines Build von baz, erhalte ich eine Fehlermeldung: module not found: org.bar.foo.

Nach dem Blick auf some examples, habe ich versucht, die --module-path durch einen Compiler arg in der Build-Datei für baz, aber ich habe bisher kein Glück gehabt. Ich bin mir nicht sicher, wie spezifisch/allgemein ich den Modulpfad spezifizieren kann.

+3

"Ich bin mir nicht sicher, wie spezifisch/allgemein ich den Modulpfad angeben kann." ~> Es genügt, den Ordner zu benennen, der das Modul "org.foo.bar" enthält. – Nicolai

+0

@NicolaiParlog In der Build-Datei für 'baz' habe ich' basedir = "." '. Stimmt die Verwendung von '--module-path $ {basedir} /../ foo'? Ich habe versucht, einen von dort oder nach unten in den Paketordner zu gehen, aber ich habe kein Glück. – MattDs17

+1

Ich weiß fast nichts über Ant, also kann ich hier nicht wirklich helfen. – Nicolai

Antwort

3

Ich habe mein Problem gefunden.

Das --module-path Flag sollte auf kompilierte (gebaute) Module zeigen. Im Fall von Ant ist dies das Build-Verzeichnis.

Für Quelldateien (was meine ursprüngliche Frage zu tun versucht), verwenden Sie --module-source-path.

Weitere Informationen finden Sie unter module system JEP.