2010-01-29 14 views
14

Tengo una aplicación desarrollada en un entorno Windows. La aplicación en sí misma se implementa en un entorno Linux. Cada vez que despliegue esta aplicación, tengo que convertir los archivos ejecutables a formato UNIX usando dos2unix. Originalmente pensé que esto fue causado por la codificación Windows CP1252, así que actualicé Maven para codificar los archivos en UTF-8. Esto no solucionó mi problema y descubrí rápidamente que esto tiene que ver con los retornos de carro y los avances de línea al buscar en este sitio. ¿Hay alguna manera de que Maven convierta todos los archivos al formato UNIX durante el proceso de compilación? Estoy utilizando Maven 2.2.1 y Java 5.Convierta archivos a formato UNIX usando Maven

Respuesta

14

Usted puede utilizar el plugin de Maven antrun a llamar a la tarea ant fixcrlf:

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>ant-test</groupId> 
    <artifactId>ant-test</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>ant-test</id> 
         <phase>package</phase> 
         <configuration> 
          <tasks> 
           <fixcrlf ... /> 
          </tasks> 
         </configuration> 
         <goals> 
          <goal>run</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+1

Probé , que parece estar funcionando. También estoy usando el complemento maven assembly y ahora está teniendo problemas para leer los archivos jar debido a esta conversión. ¿Alguna idea sobre cómo puedo hacer que esto se desarrolle en una máquina con Windows? –

+1

Es probable que desee agregar un atributo de inclusión o exclusión, por lo que solo está cambiando * .txt o cualquier recurso que intente modificar – Kevin

+0

Gracias, se incluye/no se excluye. Sin embargo, modifica los archivos en mis directorios de origen, lo cual estará bien si es necesario, pero ¿hay alguna manera de hacer que el complemento Maven ensamble ejecute esta tarea mientras se está construyendo para que no tenga que revertir o verificar en mis archivos? –

35

El plug-in de montaje tiene una opción lineEnding que se puede utilizar para controlar el final de línea de los archivos para un fileSet dado. Este parámetro está precisamente allí para hacer lo que quieras. En última instancia, podría crear archivos zip con líneas CRLF y archivos tar.gz con líneas LF.

E.g.

... 
<fileSet> 
    <directory>${basedir}/src/main/build/QA</directory> 
    <outputDirectory>/bin</outputDirectory> 
    <includes> 
     <include>start.sh</include> 
    </includes> 
    <lineEnding>unix</lineEnding> 
</fileSet> 
... 

valores posibles en este momento incluyen:

  • "mantener" - Conservar todos los finales de línea
  • "Unix" - los finales de línea de estilo Unix uso (es decir, "\ n")
  • "LF" - utilizar una línea de alimentación única finales de línea (es decir, "\ n")
  • "DOS" - finales de línea de estilo de windows uso DOS-/(es decir, "\ r \ n")
  • "ventanas "- Use DOS-/Windows extremo de línea estilo (es decir "\ R \ n")
  • "crlf" - Uso de retorno de carro, finales de línea de avance de línea (es decir, "\ r \ n")
Cuestiones relacionadas