2016-05-18 15 views
0

編集コマンドはbashに単一引用符を追加します。これは、Mavenのがこのように振る舞うことを私のミスでいました。ケースが閉まった。Mavenの幹部が誤っ


私のPOMファイルから一連のコマンドをbashで実行したいとします。コマンドの1つは、パラメータとしてファイルのリストを取ります。私が欲しいのは、このようにそれを実行することです:

protoc --java_out=./outdir --proto_path="somepath" somepath/file1 somepath/file2 

しかし、私はMavenのexecの内部からこれを呼び出すと、これは実際に実行されます。

protoc --java_out=./outdir --proto_path=somepath 'somepath/file1 somepath/file2' 

とBashを1つだけが存在することを考えていますファイルは、明らかに存在しません。

私はMavenのは、引数にスペースがあるかどうかを検出して、単一引用符に入れて手助けしようとすることを前提としていますが、この場合、私はそれが起こることを望んでいません。以下は

は、execプラグインの設定です。すべての変数は、pomが実行されたときに割り当てられ、引数として1つのファイルのみで動作します。これは同様のビルドのアーキタイプであり、異なるファイルリストを持つ具体的なポムを生成できるようにしたいと考えています。

<groupId>org.codehaus.mojo</groupId> 
<artifactId>exec-maven-plugin</artifactId> 
<version>1.4.0</version> 
<executions> 
<execution> 
    <id>compile-sources</id> 
    <phase>generate-sources</phase> 
    <goals> 
     <goal>exec</goal> 
    </goals> 
    <configuration> 
     <executable>bash</executable> 
     <arguments> 
      <argument>-c</argument> 
      <argument> 
       set -x -E -e 
       export PATH="${basedir}/${unpackPath}/bin/:${PATH}" 
       export DYLD_LIBRARY_PATH="${basedir}/${unpackPath}/lib/:${DYLD_LIBRARY_PATH}" 

       chmod u+x "${unpackPath}/bin/"* 
       rm -rf "${compiledSrcPath}" 
       mkdir -p "${compiledSrcPath}" 

       protoc \ 
       --java_out=./"${compiledSrcPath}" \ 
       --proto_path="${protoPath}" \ 
       ${protoFiles} 
      </argument> 
     </arguments> 
    </configuration> 
</execution> 
</executions> 

編集:プロジェクトが原型から生成されたときに問題が既に生じているようです。結果のpom.xmlは、元${protoFiles}の代わりに"file1 file2"含まれています。

答えて

1

私は原型の私自身のバージョンに混ざってしまったと誤って引用符で囲まれた"${protoFiles}"を持っていたものを使用していました。

変数は引用符で囲まれていない場合、Mavenはいずれも追加しませんし、期待どおりに動作します。