2011-06-29 12 views
16

Mavenリソースを持つファイルに対するパーミッションを保持することは可能ですか?testResources?私のユースケースは、私がテストから使用できるようにしたい/ src/test/resourcesに入れたSeleniumバイナリドライバです。マイ-rwxr-XR-xがしかしように変更され-rw-rを - r--のターゲット/テストクラスMavenリソースを持つファイルに対するパーミッションを維持する:testResources

答えて

22

これはbug in the Maven Resource Plugin

あなたはMavenのアセンブリのプラグインを使用している場合は、あなたのようですでそこにfile permissionsを設定することができます。

そうでない場合は、回避策を検討するとよいでしょう。これを行うには、次のようにしてください。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <executions> 
     <execution> 
      <id>process-test-classes</id> 
      <phase>process-test-classes</phase> 
      <configuration> 
       <target> 
        <chmod file="target/test-classes/test.sh" perm="755"/> 
       </target> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+0

ありがとうございます!非常に迅速な答えと回避策は、今私にとって十分だった。 –

+0

あなたは大歓迎です! Antは、手動で行うことを考えているときに私の心に来た最初のものでした。おそらく他にもたくさんのオプションがあります。 < "ではなく、" "が使用されている場合は内に – wjans

+0

が動作します。 antrun plugin v1.7を使用して –

3

UNIXマシンで実行すると自動的に有効になるプロファイルが追加されました。インラインシェルスクリプトを実行して、フォルダ内のすべてのファイルから別のフォルダ内の同じ名前のファイルに再帰的にファイルアクセス許可を適用します(SRCおよびDST変数を参照)。このスクリプトには、/bin/shfind,xargs、およびchmodが必要です。これらは現代のすべてのシステムに存在する必要があります。

<profile> 
     <id>unix</id> 
     <activation> 
      <os> 
       <family>unix</family> 
      </os> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>exec-maven-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>fix-resource-permissions</id> 
          <goals> 
           <goal>exec</goal> 
          </goals> 
          <phase>process-test-resources</phase> 
          <configuration> 
           <executable>/bin/sh</executable> 
           <arguments> 
            <argument>-c</argument> 
            <argument> 
             set -x 

             SRC="${basedir}/src/test/resources" 
             DST="${project.build.directory}/test-classes" 

             find "$$SRC" -printf "%P\0" | xargs --verbose -0 -I {} chmod --reference="$$SRC/{}" -f "$$DST/{}" 
            </argument> 
           </arguments> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
+0

素敵な解決策! –

関連する問題