2009-12-28 10 views
5

Ich habe ein Arbeits Maven-Projekt mit mvn archetype:create ... Ich kann alle Quellen mit mvn compile kompilieren, aber ich möchte in der Lage sein, auch eine einzelne Datei zur Zeit zu kompilieren.Wie kompiliere ich eine einzelne Datei mit Maven?

Es gibt eine Möglichkeit, Maven zu bitten, eine beliebige einzelne .java-Datei zu kompilieren?

Dank

Updates 1:

ich die einzige Datei auf der Befehlszeile angeben würde. Ich würde die Datei im Moment des Befehlsstarts auswählen. Ich würde die pom.xml nicht ändern.

Update 2:

Warum ich das gefragt? Weil ich autotest-java mit dem Vim-Editor verwenden würde.

autotest-java ist ein Hack/eine Erweiterung von ZenTest (eine Ruby-Anwendung, die bei jedem Speichern einer Ruby-Datei Unit-Tests automatisch startet).

autotest-java erfordert eine Maven-Projektstruktur und erfordert, dass Ihr Editor/IDE "Kompilieren beim Speichern" ausführt. Tatsächlich erkennt es nicht, wenn eine .java-Datei geändert wird, sondern stattdessen für .class-Dateien auf Änderungen.

Ich habe erfolgreich Autotest-Java mit Netbeans (die "Kompilieren beim Speichern" unterstützen) verwendet, aber ich würde es mit Vim verwenden.

+0

Warum? Welchen Vorteil hätte das Kompilieren nur einer einzigen Datei? –

+0

@Joachim: Ich würde "compile on save" auf Vim aktivieren, um vim mit autotest-java zu verwenden. –

+0

Dies ist eigentlich eine erforderliche Funktion mit einem Build-System, um nur eine einzige Datei kompilieren zu können. Noch mehr in C++ – rajeshnair

Antwort

1

Du musst configure the compiler plugin zu die anderen Dateien auszuschließen oder zu umfassen nur, dass man.

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <!-- put your configurations here --> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 
+1

Danke, aber ich würde die einzelne Datei in der Befehlszeile angeben. Ich würde die Datei im Moment des Befehlsstarts auswählen. Ich würde die pom.xml nicht ändern. –

+0

Fügen Sie in der Konfiguration des Plugins eine Variable anstelle eines Dateipfads hinzu. – rodrigoap

+1

Danke. Könnten Sie erklären, wie? –

3

Dies ist meines Wissens auf der Kommandozeile nicht möglich. Und es ist erwähnenswert, dass die (optionale) Parameter excludes und includes, die Sie definieren können die Compiler Plugin im pom.xml zu konfigurieren sind veraltet, wie unten dargestellt:

 
$ mvn help:describe -Dcmd=compiler:compile -Ddetail 
[INFO] Scanning for projects... 
[INFO] Searching repository for plugin with prefix: 'help'. 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building sandbox 
[INFO] task-segment: [help:describe] (aggregator-style) 
[INFO] ------------------------------------------------------------------------ 
[INFO] [help:describe {execution: default-cli}] 
[INFO] 'compiler:compile' is a plugin goal (aka mojo). 
Mojo: 'compiler:compile' 
compiler:compile 
    Description: Compiles application sources 
    Deprecated. No reason given 
    Implementation: org.apache.maven.plugin.CompilerMojo 
    Language: java 
    Bound to phase: compile 

    Available parameters: 

    ... 

    excludes 
     A list of exclusion filters for the compiler. 
     Deprecated. No reason given 

    ... 

    includes 
     A list of inclusion filters for the compiler. 
     Deprecated. No reason given 

    ... 

So gibt es eigentlich keinen wirklichen Weg, was Sie zu tun auf lange Sicht wollen.

Aber das führt zu einer Frage. Da Maven die inkrementelle Kompilierung verwendet, d. H. Es kompiliert nur Klassen, die sich seit dem letzten Build auf der Festplatte geändert haben, warum sollten Sie nur eine Klasse kompilieren? Was ist dein Anwendungsfall?

+0

Danke für die Antwort. Mein Anwendungsfall ist Autotest-Java mit Vim verwenden. –

Verwandte Themen