Wie kompilieren Maven-Projekt über die Befehlszeile mit allen Abhängigkeiten?
Ich habe ein Maven Projekt, dass in der Regel kann ich kompilieren und ausführen von eclipse, aber wenn ich es kompilieren von der Kommandozeile aus die Abhängigkeiten fehlen noch und ich bin immer Fehler. Ich kann das Projekt kompilieren erst nachdem ich den download von Abhängigkeiten und fügen Sie Sie zu c:/Java/jdk/jre/lib/ext
Wie kann ich das Projekt kompilieren und die Abhängigkeiten von der Kommandozeile ohne die Zugabe manuell zu jdk? Kann der compiler irgendwie Lesen maven-Abhängigkeiten?
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>TCPPing</groupId>
<artifactId>TCPPing</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.6</version>
</dependency>
</dependencies>
</project>
- bitte Lesen Sie zumindest einige der maven Dokumentation: maven.apache.org/guides/getting-started/... - und bitte NIEMALS ETWAS hinzufügen lib/extern/ wieder! Der java-classpath Optionen sind genug, um führen Sie die Anwendung. Dont verschmutzen Ihre java-installation mit Projekt-spezifischen Dateien.
- Ich habe gelesen, es und ich immer noch nicht verstehen, was zu tun ist, ich bin sehr neu auf all dies. Ich schaffte es zum generieren der jar-Datei von meinem Projekt mit allen Abhängigkeiten und führen Sie es, aber das ist nicht das, was ich brauche, ich will nur mein compiler an, Lesen Sie meine Abhängigkeiten von projectFolder/lib
- Bitte fügen Sie die
pom.xml
Ihres Projekts - fügte hinzu, es zu dem post
- Welche Abhängigkeiten haben, die Sie brauchen, um hinzuzufügen, zu JDKs ext-Ordner? Sie könnten finden die entsprechenden Abhängigkeiten mit search.maven.org und fügen Sie Sie zu Ihrem pom.
- ich brauche alle Abhängigkeiten von der pom.xml oben angegeben. commons-cli, commons-net und logback-classic
- 1. haben Sie versucht, mvn clean compile? 2. Läuft dein Programm mit java TCPPing erfordern würde, dass deine main-Klasse im default-package, das wäre eine schlechte Praxis.
- habe ich, hilft nicht. Ich weiß, es ist eine schlechte Praxis, aber es ist ein port von einer Zuordnung, die klar besagt, dass das Programm ausgeführt werden muss, irgendwie.
- Ausführung unterscheidet sich von der Laufzeit. Poste bitte die maven-Befehl aus, Ihr ausführen um die Anwendung zu kompilieren und Fehlermeldungen an. Bitte fügen Sie zu Ihrer Frage, kein Kommentar.
- Maven wird laden Sie Ihre Abhängigkeiten zu ~/.m2/repository nicht project/lib. Es wird dann aktualisieren Sie die compile-Zeit classpath auf Sie zeigen, während der Kompilierung.
- mvn clean kompiliert, funktioniert einwandfrei. sagt der build erfolgreich. aber wenn ich javac kompilieren, es funktioniert nicht.
- MVN compile javac läuft für Sie, indem die abhängigen jars im classpath. Hast du die class-Dateien generiert, die in den target-Ordner?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte es Recht einfach sein, führen Sie Ihre Anwendung aus einer IDE mit einigen maven-Unterstützung (Eclipse, IntellIJ). Diese IDE kümmert sich um die Erstellung der korrekten classpath.
Wenn Sie wollen, um dies manuell zu tun, versuchen Sie dies:
wechseln Sie in das Verzeichnis, das enthält die pom.xml
Ausführung des maven Befehls:
Diese wird Ihr Projekt kompilieren und erzeugen der jar, die Sie in den pom.xml Datei. Es läuft der maven-Phasen sauber und in jeder phase bis zu installieren (kompilieren, testen, etc).
Dann sammeln Sie alle jar-Dateien, die Sie verwenden, wie Abhängigkeiten (erforderlich, um das Projekt auszuführen):
Dieser führt die dependency-plugin, das wird kopieren Sie alle Abhängigkeiten in
target/dependency
.Können Sie dann führen Sie Ihre main-Methode verwenden:
-cp
definiert den classpath (alle Standorte /jar-Dateien /Ordner aus, die Klassen enthalten).TCPPing
ist die Klasse ausführen, die eine main-Methode.Hinweis: die
:
ist für Linux /Mac - ich denke, dass windows verwendet eine;
.Error: Could not find or load main class SocketWindowWordCount
Sie denken was der Grund sein könnte?Javac weiß nichts über maven. So wird es nicht nutzen, maven pom.xml.
Den Wert von maven ist, dass es entfernt die manuelle Arbeit bei der Erstellung, das testen und die Freigabe eines Projektes.
Diese beinhaltet immer Abhängigkeiten, und läuft, javac mit Ihnen, werden dem classpath Hinzugefügt der javac-Befehl.
Können Sie manuell ausführen javac nach maven downloads Abhängigkeiten zu ~/.m2/repository. Allerdings müssen Sie sagen, javac, wo die Gläser. So erfolgt über den classpath argument.
Wenn Sie versuchen, führen Sie das Projekt nach der Verwendung von mvn, um es zu kompilieren, müssen Sie diese in den gleichen Ordner, wo Ihre .class-Dateien abgelegt. So sollte /target/java oder ähnliches.