我正在使用maven程序集插件来打包一个包含所有依赖项的jar。但是jar文件不可执行。如何更改jar的权限?
-rw-r--r-- 1 e17490 ADPROD\Domain Users 12072889 Nov 12 14:16 com-foo-bar.jar
的pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>foo.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:12)
使用maven:exec
插件执行chmod
例如
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${org.codehaus.mojo.version}</version>
<executions>
<execution>
<id>script-chmod</id>
<phase>install</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>chmod</executable>
<arguments>
<argument>+x</argument>
<argument>your-assembled-jar.jar</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:3)
如果有Java支持,可以在Linux上执行Jar文件。一些发行版已经有了这样的配置。您需要做的就是将jar文件威胁为任何可执行文件,例如编译程序或脚本:
chmod 700 myJar.jar
./myJar.jar
所以问题确实有意义。
您需要注意,此解决方案可能无法跨平台移植。
根据this answer,您需要在Maven上使用以下内容:
<fileSets>
<fileSet>
<directory>${basedir}/src/main/web</directory>
<includes>
<include>some_dir</include>
</includes>
<outputDirectory>web</outputDirectory>
<fileMode>0777</fileMode>
<directoryMode>0777</directoryMode>
</fileSet>
</fileSets>
如果不起作用,您也可以使用chmod Ant task从Maven拨打AntRun Plugin:
<chmod file="${dist}/start.sh" perm="ugo+rx"/>