2011-06-29 36 views

回答

22

這似乎是一個bug in the Maven Resource Plugin

如果您正在使用Maven的大會插件,您可以在那裏配置file permissions

如果不是,您可能會考慮解決方法。你可以通過Ant這樣做來做到這一點:

<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插件v1.7 –

3

我添加了一個在Unix機器上運行時自動激活的配置文件。它執行一個內聯shell腳本,以從文件夾中的所有文件遞歸獲取文件權限到另一個文件夾中同名的文件(請參閱SRC和DST變量)。該腳本需要/bin/sh以及find,xargschmod,它們應該存在於所有現代系統中。

<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

不錯的解決方案! –