我有一个 Maven 项目,它构建了 Apache solr-core 库的修补版本。第一步是解压原始源代码:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>solr-core-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.apache.solr</groupId>
<artifactId>solr-core</artifactId>
<version>${solr.version}</version>
<type>jar</type>
<classifier>sources</classifier>
<outputDirectory>${solr.sources.dir}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
问题在于,在某些平台上,源文件无法读取,权限为 070 (---rwx---)。例如。它在 Linux 构建服务器上没问题(权限为 644),但开发人员的 Windows 7 计算机之间的行为不一致,每个计算机都在 Cygwin 下且使用 umask 0022。
我想在解压后添加一个步骤来 chmod 源:有没有办法做到这一点?我尝试了依赖插件的 ignorePermissions 和 useJvmChmod 的排列,但没有成功。我知道程序集插件支持 chmod 操作,但显然没有像我希望的那样就位,而且我还遇到了使用 ant 的严厉解决方案。有什么想法或建议吗?谢谢!
最佳答案
解压文件后,您可以使用 antrun 插件运行 chmod:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>build</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo>run chmod in ${basedir}</echo>
<chmod file="${project.basedir}/filepattern.txt" perm="ugo+rx"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
ant chmod 任务通常不会在普通窗口上执行任何操作(它不会导致构建失败)。
关于maven - 更改 Maven 解包源的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32144185/