appassembler maven插件不会对生成的脚本设置“执行”权限

时间:2012-01-25 00:59:23

标签: linux unix maven appassembler

AppAssembler Maven plugin为我创造分配做得很好。最后一个问题是生成的Shell脚本没有执行权限,因此我需要手动设置它们。

我在Linux RedHat上

有人知道自动设置它们的干净方法吗?

3 个答案:

答案 0 :(得分:7)

执行此操作的唯一方法是在运行Antrun后使用其他maven插件(AssemblyAppAssembler处理该文件。

此问题(请参阅下面的链接)已在AppAssembler项目问题​​跟踪器中显示,并被拒绝为Won't Fix

问题:MAPPASM-54

答案 1 :(得分:2)

我认为可以在assembly.xml标记的fileSet中进行设置:

<fileSets>
<fileSet>
  <directory>src/resources/bin</directory>
  <lineEnding>keep</lineEnding>
  <useDefaultExcludes>true</useDefaultExcludes>
  <outputDirectory>bin</outputDirectory>
  <includes>
    <include>*.bat</include>
    <include>*.sh</include>
  </includes>
  <fileMode>744</fileMode>
</fileSet>
...

答案 2 :(得分:0)

由于Maven 3.0.3所有插件都按照它们在pom.xml中的顺序执行。因此,以独立平台方式设置可执行标志就像在appassembler插件之后使用maven-enforcer-plugin一样简单。

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.3.1</version>
        <executions>
          <execution>
            <id>enforce-beanshell</id>
            <phase>package</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <evaluateBeanshell>
                  <condition>
                      import java.io.File;

                      print("set executable for file ${basedir}/dist/bin/mql");
                      new File("${basedir}/dist/bin/mql").setExecutable(true,false);                   

                      true;
                  </condition>
                </evaluateBeanshell>
              </rules>
              <fail>false</fail>
            </configuration>
          </execution>
        </executions>  
      </plugin>