18

Windows環境で開発されたアプリケーションがあります。アプリケーション自体はLinux環境にデプロイされます。このアプリケーションをデプロイするたびに、dos2unixを使用して実行可能ファイルをUNIX形式に変換する必要があります。もともとこれはWindowsCP1252エンコーディングが原因だと思っていたので、ファイルをUTF-8にエンコードするようにMavenを更新しました。これでは問題は解決しませんでした。このサイトを検索すると、これがキャリッジリターンとラインフィードに関係していることがすぐにわかりました。ビルドプロセス中にMavenにすべてのファイルをUNIX形式に変換させる方法はありますか?Maven2.2.1とJava5を使用しています。

4

2 に答える 2

45

アセンブリ プラグインにはlineEnding、特定の .xml のファイルの行末を制御するために使用できるオプションがありますfileSet。このパラメーターは、まさにあなたが望むことをするためにあります。最終的に、CRLF 行を使用して zip アーカイブを構築し、LF 行を使用して tar.gz アーカイブを構築できます。

例えば

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

この時点で可能な値は次のとおりです。

  • "keep" - すべての行末を保持
  • "unix" - Unix スタイルの行末を使用します (例: "\n")
  • "lf" - 単一の改行行末を使用します (例: "\n")
  • "dos" - DOS/Windows スタイルの行末を使用します (例: "\r\n")
  • "windows" - DOS/Windows スタイルの行末を使用します (例: "\r\n")
  • "crlf" - キャリッジ リターン、ライン フィードの改行を使用します (つまり、"\r\n")
于 2010-01-29T14:52:44.520 に答える
17

Maven antrunプラグインを使用して、fixcrlfantタスクを呼び出すことができます。

<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>
于 2010-01-29T14:04:42.747 に答える