maven - 更改 Maven 解包源的权限?

标签 maven permissions unpack

我有一个 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 源:有没有办法做到这一点?我尝试了依赖插件的 ignorePermissionsuseJvmChmod 的排列,但没有成功。我知道程序集插件支持 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/

相关文章:

eclipse - 为什么 Eclipse 报告 JUnit 编译错误,而我可以在终端中正常编译和运行测试?

spring - 用于编写 Spring AOP 程序的 Maven 依赖项?

android - 警告您的 Apk 正在使用需要隐私政策 : (android. 权限的权限。READ_PHONE_STATE)

node.js - sudo npm install 给我拒绝访问

PHP 将字节字符串转换为整数

perl - 使用 Perls unpack() 验证加盐哈希

java - 无法上传包含 Jersey 2 的文件。错误 400

maven - 运行 Maven Checkstyle 并因错误而失败

google-apps-script - 授权我创建的 Google 脚本时遇到问题

Python:从函数中压平包含另一个元组的元组的最简单方法