5

exec-maven-pluginを使用して、Node.js で RequireJS のオプティマイザー (r.js) を実行しています (Rhino よりもはるかに高速であるため)。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2</version>
    <executions>
        <execution>
            <id>compile-js</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>${node.executable}</executable>
                <arguments>
                    <argument>${project.build.directory}/dependency/requirejs/r.js</argument>
                    <argument>-o</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

問題は、コンパイル中に問題が発生した場合は常に、r.js がぼやけるはずのエラー メッセージが Maven のコンソール出力に表示されないことです。トラブルシューティングを行うために、-X フラグを指定して Maven コマンドを再実行し、デバッグ出力を取得して、exec-maven-plugin が実行中の実際のコマンドを出力するようにします。それは次のようなものです:

プロジェクトのルート/ターゲット/依存関係/ノード/ノード\
    プロジェクトのルート/ターゲット/依存関係/requirejs/r.js\
    -o src/main/webapp/app.build.json

コマンドラインから手動でコマンドを実行すると、コンソールに実際のコンパイル エラーが表示され、修正に進みます。

2>&1引数としてリダイレクト ビットのような exec-maven-plugin を作成する方法をすぐに見つけることができなかったため、stderr を stdout にリダイレクトしても (Windows では) 役に立ちませんでした。これは stderr/stdout の問題であるというのは単なる大雑把な推測であるため、私はそのルートをあまり追求しませんでした。

何が起こっているのかについての指針、または私が実行できるさらなる診断手順についての提案はありますか? この問題には複数の可動部分があることを覚えておいてください: Maven、exec-maven-plugin、Node.js、r.js、そして 1 つの疲れた頭です。

PSプロジェクトのタイムラインでは、現在POMの完全なオーバーホールを行うことができないため、requirejs-maven-pluginを最後の手段として試してみることを検討しています。今の環境で何かできないか検討中です。

4

1 に答える 1

1

node.js呼び出しをr.jsスクリプトにラップして、maven-execプラグインから呼び出すのはどうですか?

を見ると、その出力r.jsに使用されているようです。console.logおそらく、シェルスクリプトから実行すると、出力をキャッチしたり、ファイルにパイプしたり、エラーを正規表現したりすることができます。

OS によっては、これは簡単に実行できる場合があります。

于 2013-02-18T09:17:57.547 に答える