2009-12-28 43 views
5

Configuré un proyecto maven funcional con mvn archetype:create ... Puedo compilar todas las fuentes con mvn compile pero también quiero ser capaz de compilar un único archivo a la vez.¿Cómo compilar un solo archivo con maven?

¿Hay alguna manera de pedirle a maven que compile un archivo .java único arbitrario?

Gracias

Actualizaciones 1:

Me especificar la fila de a uno en la línea de comandos. Elegiría el archivo en el momento del lanzamiento del comando. No modificaría el pom.xml.

Actualización 2:

Por qué me pidió esto? Porque usaría autotest-java con el editor de Vim.

autotest-java es un truco/extensión de ZenTest (que es una aplicación de Ruby que inicia automáticamente pruebas unitarias en cada guardado de un archivo Ruby).

autotest-java requiere una estructura de proyecto maven y requiere que su editor/IDE realice "compilación al guardar". De hecho, no reconoce cuando se modifica un archivo .java, sino que supervisa los archivos .class en busca de modificaciones.

Utilicé con éxito autotest-java con Netbeans (que admite "compilar en guardar") pero lo usaría con Vim.

+0

¿Por qué? ¿Qué ventaja tendría compilar solo un archivo? –

+0

@Joachim: habilitaría "compilar en guardar" en Vim para poder usar vim con autotest-java. –

+0

Esto es realmente una característica requerida con un sistema de compilación para poder compilar solo un archivo. Aún más en C++ – rajeshnair

Respuesta

1

que tendrá que configure the compiler plugin a excluyen los otros archivos o para incluyen sólo que uno.

<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

Gracias, pero yo especificaría el único archivo en la línea de comando. Elegiría el archivo en el momento del lanzamiento del comando. No modificaría el pom.xml. –

+0

En la configuración del complemento, agregue una variable en lugar de una ruta de archivo. – rodrigoap

+1

Gracias. ¿Podrías explicar cómo? –

3

Que yo sepa, esto no es posible en la línea de comando. Y vale la pena señalar que el (opcional) Parámetros excludes y includes que puede definir para configurar el plugin del compilador en el pom.xml están en desuso, como se muestra a continuación:

 
$ 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 

    ... 

Así que en realidad no hay forma real de hacer lo que querer a largo plazo.

Pero esto lleva a una pregunta. Como Maven usa la compilación incremental, es decir, compila solo las clases que cambiaron en el disco desde la última compilación, ¿por qué necesitaría compilar solo una clase? ¿Cuál es tu caso de uso?

+0

Gracias por la respuesta. Mi caso de uso es usar autotest-java con vim. –

Cuestiones relacionadas