6

AppAssembler Maven 插件在为我生成分发方面做得很好。最后一个问题是生成的 Shell 脚本没有执行权限,所以我需要手动设置它们。

我在 Linux RedHat 上

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

4

3 回答 3

7

做到这一点的唯一方法是使用另一个 maven 插件处理文件,Antrun例如Assembly运行AppAssembler.

此问题(请参阅下面的链接)已在 AppAssembler 项目问题跟踪器上提出,并被拒绝为Won't Fix.

问题:MAPPASM-54

于 2012-01-25T01:47:59.880 回答
3

我认为它可以在你assembly.xmlfileSet标签中设置:

<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>
...
于 2012-01-25T01:04:33.160 回答
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>
于 2014-03-07T11:34:07.843 回答