AppAssembler Maven plugin为我创造分配做得很好。最后一个问题是生成的Shell脚本没有执行权限,因此我需要手动设置它们。
我在Linux RedHat上
有人知道自动设置它们的干净方法吗?
答案 0 :(得分:7)
执行此操作的唯一方法是在运行Antrun
后使用其他maven插件(Assembly
或AppAssembler
处理该文件。
此问题(请参阅下面的链接)已在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>