更改由 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 源代码后添加一个步骤:有没有办法做到这一点?我尝试了依赖插件的 ignorePermissionsuseJvmChmod 的排列,但没有成功。我知道程序集插件支持 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 更改由代码块执行而不是按钮触发的视图

更改由AngularJs从Chrome内容脚本动态创建的包装选择的值

CentOS7源的配置

更改centos 7的源为阿里源

yum更改国内源

我尝试访问元组值,但它说在尝试在 Python 中创建保存/加载方法时解包的值太多