J'ai une application qui est développée dans un environnement Windows. L'application elle-même est déployée dans un environnement Linux. Chaque fois que je déploie cette application, je dois convertir les fichiers exécutables au format UNIX en utilisant dos2unix. Je pensais initialement que cela a été causé par l'encodage Windows CP1252, donc j'ai mis à jour Maven pour encoder les fichiers en UTF-8. Cela n'a pas résolu mon problème et j'ai rapidement découvert que cela avait à voir avec les retours chariot et les sauts de ligne en cherchant sur ce site. Existe-t-il un moyen pour que Maven convertisse tous les fichiers au format UNIX pendant le processus de construction? J'utilise Maven 2.2.1 et Java 5.Convertir des fichiers au format UNIX en utilisant Maven
14
A
Répondre
14
Vous pouvez utiliser le plugin Maven antrun pour appeler la tâche fourmi 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>
35
Le plugin de montage a une option lineEnding
qui peut être utilisée pour contrôler la la fin de ligne des fichiers pour un fileSet
donné. Ce paramètre est précisément là pour faire ce que vous voulez. En fin de compte, vous pouvez construire des archives zip avec des lignes CRLF et des archives tar.gz avec des lignes LF.
E.g.
...
<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" - les fins de ligne utilisation de style Unix (ie "\ n")
- "lf" - Utilisez une seule fin de ligne d'alimentation en ligne (par exemple "\ n")
- "dos" - Utilisez DOS-/terminaisons de ligne de style windows (par exemple "\ r \ n") fenêtres
- » "- Utiliser DOS-/Windows terminaisons de ligne (par ex. "\ R \ n")
- "CRLF" - Utilisez retour chariot, les fins de ligne d'alimentation en ligne (par exemple "\ r \ n")
J'ai essayé , qui semble fonctionner. J'utilise également le plugin maven assembly et il a maintenant des problèmes de lecture des fichiers jar en raison de cette conversion. Des idées sur comment je peux obtenir cela pour construire sur une machine Windows? –
Vous voudrez probablement ajouter un attribut includes ou exclues de sorte que vous ne changiez que * .txt ou toutes autres ressources que vous essayez de modifier – Kevin
Merci, les inclus/exclut travaillé. Il modifie les fichiers dans mes répertoires source, ce qui sera OK si besoin est, mais est-il possible de faire en sorte que le plug-in d'assemblage Maven exécute cette tâche car il est construit de telle sorte que je n'aurai pas à revenir ou vérifier dans mes fichiers? –