![]() | Wie viele von euch Java-Programmierer hatten Probleme Kompilieren von Programmen? Bibliotheken von $ CLASSPATH, Kilometerstand Parameter an das Java-Compiler übergeben. Selbst mit den Entwicklungs-Tools für Java, die Situation nicht verbessern viel. Wir verbringen eine Menge Zeit, um paramteri und jedes Mal starten wir die Kompilierung gesetzt ist immer etwas fehlt! |
Sie können alle diese Probleme einfach durch die Organisation der Java-Quellcode und mit Hilfe eines Makefile geschrieben ad hoc zu vermeiden.
Was ist ein Makefile
Ein Makefile ist eine Datei, die Schritte, um efftuare um auf die Dateien bekommen, dass wir den Baum und alle seine Abhängigkeiten bekommen beschreibt. Es ist allgemein in Unix-basierten Plattformen verwendet und kann verwendet werden, um jede Art von Programm zu bauen. Das Werkzeug make interpretiert das makefile und kompilieren den Quellcode für ausführbare Programme und Bibliotheken.
Vorteile bei der Verwendung von Make
Viele von Ihnen werden skeptisch sein werden mit Hilfe eines Makefile für jedes Java-Projekt aus dem einfachen Grund, dass das Makefile, um die Abhängigkeiten zwischen Dateien angeben muss, es wird sicher von Projekt zu Projekt ändern. Also sollten wir schreiben ein Makefile für jedes Projekt anders. Diese Einschränkung kann durch das Schreiben eines generischen Makefile überwunden werden kann und berechnet alle Abhängigkeiten für das Projekt abgeschlossen, um das gleiche Skript für alle Projekte ohne moficare nichts im Makefile verwenden werden.
Ein Vorteil sicherlich nicht vernachlässigbar ist die Fähigkeit, nur das notwendige füllen. So vermeidet compiare von dem, was ist schon fertig und wurde nicht mit einer erheblichen Einsparung von Zeit geändert worden.
Mit nur einem makefile kompilieren können alle Quellen des Projektes.
So verwenden Sie
Das Makefile schrieb ich an Java-Projekte kompilieren können ohne Änderungen für Projekte, die eine bestimmte Verzeichnisstruktur verwendet werden müssen. Der Java-Quellcode muss ein Verzeichnis für. Java, eine für Dateien. Klasse, und ein Krug für die Bibliotheken.
Wie zum Beispiel:
| - Src | `- Main | | - Java | | `- Com | | `- Beispiel | | | - ExampleA.java | | | - ExampleB.java | | `- ExampleC.java | `- Ressourcen | `- Res.java | - Klassen | - Libs | | - Allgemeines | | | - Database | | | | - DB1.jar | | | `- DB2.jar | `- Logging | `- Log.jar | - Gläser
Um es zu benutzen, dann schreiben Sie einfach den folgenden Code in der Datei Makefile im Root-Verzeichnis des Projektes sicher, dass der Name des Verzeichnisses, in der Datei angegeben ist (für die Klassen Klasse;.. Src für Bibliotheken für Java und Glas) und starten Sie die befehle make
das ist alles. Wenn wir ein Gefäß mit das ganze Projekt soll einfach laufen make && make jar
Makefile
# # Makefile # Autor: Danilo Abbasciano # # Hier werden die Verzeichnisse für Klassen und Quellen Set = CLASS_DIR Klassen Src = SOURCE_DIR JARS_DIR = Gläser find $ ( SOURCE_DIR ) - name "*.java" - printf % h\\n | sort | uniq | sed 's/$(SOURCE_DIR) \/ \? //' ) SUBDIRS: = $ (shell finden $ (SOURCE_DIR) - name "* Java." - Printf% h \ \ n | sort | uniq | sed 's / $ (SOURCE_DIR) \ / \ / /?') local / java / bin JAVA_HOME = / usr / local / java / bin # Compiler Feld # JDEBUGFLAGS =-g-Abwertung # JDEBUGFLAGS =-O-hängen-nowarn ) / javac JCC = $ (JAVA_HOME) / javac clean classes compile jar . Phony: clean compile jar Klassen zu: SUBDIRS ) ; do \ @ @ Für p in $ (SUBDIRS); tun \ echo 'Compile'; \ Export subdir = "/> p, \ print - directory compile ; \ machen - nein - Drucken - Compile-Verzeichnis \ erledigt Reinigung: f * ~ *. class *. bak $ ( foreach dir ,$ ( SUBDIRS ) ,$ ( CLASS_DIR ) /$ ( dir ) /*. class ) - Rm - f * ~ * Klasse Bak $ (foreach dir, $ (SUBDIRS) $ (CLASS_DIR) / $ (DIR) / * Klasse.).. ) /$ ( SUBDIR ) LOCAL_CLASS_DIR = $ (CLASS_DIR) / $ (Unterverzeichnis) ) /$ ( SUBDIR ) LOCAL_SOURCE_DIR = $ (SOURCE_DIR) / $ (Unterverzeichnis) jar: ) ; jar - cf ../$ ( JARS_DIR ) / project . jar * cd $ (CLASS_DIR) jar - CF .. / $ (JARS_DIR) / Projekt-jar *. compile: Klassen # Erstelle dir Zielklasse falls nicht vorhanden. ) : $ (LOCAL_CLASS_DIR): LOCAL_CLASS_DIR ) mkdir - p $ (LOCAL_CLASS_DIR) # Neue Regel für Java . Suffixe: java . class . Endungen:.. Java Class # Das magische Befehl weist zu machen class-Dateien in einem anderen Verzeichnis zu finden class $ ( LOCAL_CLASS_DIR ) vpath%. Klasse $ (LOCAL_CLASS_DIR) java $ ( LOCAL_SOURCE_DIR ) vpath%. Java-$ (LOCAL_SOURCE_DIR) # Classpath, alle in. / Gläser und. / Libs ) :$ ( SOURCE_DIR ) :$ ( subst . jar ,. jar :,$ ( wildcard libs /*. jar libs /*/*. jar libs /*/*/*. jar jars /*. jar ) ) LIBCLASSPATH: = $ (CLASS_DIR): $ (SOURCE_DIR): $ (subst. Jar Jar:., $ (Wildcard libs / * Jar libs / * / * Jar libs / * / * / * Jar Gläser / *... . jar)) # Befehl compil class : .. Java-Klasse: ) $ ( JCC ) - nowarn - d $ ( CLASS_DIR ) $ ( JDEBUGFLAGS ) $< CLASSPATH = $ (LIBCLASSPATH) $ (JCC) - nowarn - d $ (CLASS_DIR) $ (JDEBUGFLAGS) $ < # Finden Sie heraus, die Zieldateien $ ( LOCAL_SOURCE_DIR ) /*. java ) PATHFILES = $ (wildcard $ (LOCAL_SOURCE_DIR) / *. Java) $ ( LOCAL_SOURCE_DIR ) /,,$ ( PATHFILES ) ) FILES = $ (subst $ (LOCAL_SOURCE_DIR) /,, $ (PATHFILES)) java =. class ) Klassen: $ (FILES:.. = Java-Klasse)
Gute Zusammenstellung.





Ich bevorzuge Ameise!
Sie sollten versuchen, es ...