更改由 Maven 解包的源的权限?
Posted
技术标签:
【中文标题】更改由 Maven 解包的源的权限?【英文标题】:Change permissions of sources unpacked by Maven? 【发布时间】:2015-08-21 15:30:28 【问题描述】:我有一个构建 Apache solr-core 库的修补版本的 Maven 项目。第一步是解压原始源码:
<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 构建服务器上没问题(perms 为 644),但开发人员的 Windows 7 机器之间的行为不一致,每台机器都在 Cygwin 和 umask 0022 下。
我想在解压到 chmod 源代码后添加一个步骤:有没有办法做到这一点?我尝试了依赖插件的 ignorePermissions 和 useJvmChmod 的排列,但没有成功。我知道程序集插件支持 chmod 操作,但显然不是我想要的,而且我还遇到了一个使用 ant 的笨拙的解决方案。有什么想法或建议吗?谢谢!
【问题讨论】:
问题出在我的 Cygwin 设置上:解决方案是编辑 /etc/fstab,如下所述:***.com/a/7082542/1312552 【参考方案1】:解压文件后可以使用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 任务通常不会在普通窗口上执行任何操作(它不会导致构建失败)。
【讨论】:
谢谢,我尝试使用“attrib”任务来更改 Windows 上的权限,但 Cygwin 总是将它们视为 070。原来问题出在我的 Cygwin 配置上:请参阅我的评论原帖。以上是关于更改由 Maven 解包的源的权限?的主要内容,如果未能解决你的问题,请参考以下文章
Swift:Xcode 6.1.1 更改由代码块执行而不是按钮触发的视图