Question

J'ai une application qui est développée dans un environnement Windows. L'application elle-même se déploie dans un environnement Linux. Chaque fois que je déployer cette application je dois convertir des fichiers exécutables au format UNIX en utilisant dos2unix. Je pensais à l'origine cela a été causé par le codage de Windows CP1252, donc je mis à jour Maven pour encoder les fichiers en UTF-8. Cela n'a pas résolu mon problème et je l'ai trouvé rapidement que cela a à voir avec des retours chariot et les sauts de ligne en effectuant une recherche sur ce site. Est-il possible d'avoir Maven convertir tous les fichiers au format UNIX au cours du processus de construction? J'utilise Maven 2.2.1 et Java 5.

Était-ce utile?

La solution

Vous pouvez utiliser le Maven antrun plug-in pour appeler le fixcrlf tâche ant:

<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>

Autres conseils

Le module d'assemblage a une option lineEnding qui peut être utilisé pour contrôler la fin de ligne des fichiers pour un fileSet donné. Ce paramètre est là pour faire exactement ce que vous voulez. En fin de compte, vous pouvez construire des archives zip avec des lignes CRLF et archives tar.gz avec des lignes de LF.

par exemple.

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

Les valeurs possibles à l'heure actuelle comprennent:

  • "garder" - conserver toutes les fins de ligne
  • "unix" - Utiliser les fins de ligne de type Unix (à savoir "\ n")
  • "lf" - utiliser une seule fin de ligne d'alimentation en ligne (à savoir "\ n")
  • "dos" - Utilisez DOS- / terminaisons de ligne de style Windows (à savoir "\ r \ n")
  • "fenêtres" - Utilisez DOS- / terminaisons de ligne de style Windows (par exemple "\ r \ n")
  • "CRLF" - Utilisation de retour chariot, les fins de ligne d'alimentation en ligne (à savoir "\ r \ n")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top