AppAssembler Maven 插件在为我生成分发方面做得很好。最后一个问题是生成的 Shell 脚本没有执行权限,所以我需要手动设置它们。
我在 Linux RedHat 上
有人知道自动设置它们的干净方法吗?
AppAssembler Maven 插件在为我生成分发方面做得很好。最后一个问题是生成的 Shell 脚本没有执行权限,所以我需要手动设置它们。
我在 Linux RedHat 上
有人知道自动设置它们的干净方法吗?
做到这一点的唯一方法是使用另一个 maven 插件处理文件,Antrun
例如Assembly
运行AppAssembler
.
此问题(请参阅下面的链接)已在 AppAssembler 项目问题跟踪器上提出,并被拒绝为Won't Fix
.
问题:MAPPASM-54
我认为它可以在你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>
...
从 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>