2009-12-28 23 views
5

Ho impostato un progetto di lavoro con mvn archetype:create ... È possibile compilare tutte le origini con mvn compile ma voglio essere in grado di compilare anche un singolo file alla volta.Come compilare un singolo file con Maven?

C'è un modo per chiedere a maven di compilare un singolo file .java arbitrario?

Grazie

Aggiornamenti 1:

Vorrei specificare il singolo file nella riga di comando. Sceglierei il file al momento del lancio del comando. Non modificherei il pom.xml.

Aggiornamento 2:

perché ho chiesto questo? Perché userei autotest-java con l'editor Vim.

autotest-java è un hack/estensione di ZenTest (che è un'applicazione di Ruby che lancia automaticamente test di unità su ogni salvataggio di un file di Ruby).

autotest-java richiede una struttura di progetto maven e richiede che l'editor/IDE esegua "compile su save". Infatti non riconosce quando un file .java viene modificato, ma monitora i file .class per le modifiche.

Ho utilizzato con successo autotest-java con Netbeans (che supporta "compile su save") ma lo userei con Vim.

+0

Perché? Quale vantaggio avrebbe la compilazione di un solo file? –

+0

@Joachim: abiliterei "compile on save" su Vim per poter utilizzare vim con autotest-java. –

+0

Questa è in realtà una funzione richiesta con un sistema di compilazione per poter compilare un solo file. Ancora di più in C++ – rajeshnair

risposta

1

dovrete configure the compiler plugin a escludere gli altri file o per includono solo quello.

<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

Grazie, ma vorrei specificare il singolo file sulla riga di comando. Sceglierei il file al momento del lancio del comando. Non modificherei il pom.xml. –

+0

Nella configurazione del plugin aggiungere una variabile invece di un percorso file. – rodrigoap

+1

Grazie. Potresti spiegare come? –

3

A mia conoscenza, questo non è possibile in linea di comando. E vale la pena notare che la (opzionale) Parametri excludes e includes che è possibile definire per configurare il plugin compilatore nel pom.xml sono deprecati come illustrato di seguito:

 
$ 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 

    ... 

quindi, non c'è nessun vero modo di fare quello che voglio a lungo termine.

Ma questo porta a una domanda. Poiché Maven utilizza la compilazione incrementale, cioè, compila solo le classi modificate su disco dall'ultima build, perché dovresti compilare solo una classe? Qual è il tuo caso d'uso?

+0

Grazie per la risposta. Il mio caso d'uso è utilizzare autotest-java con vim. –

Problemi correlati