【问题标题】:How to make maven unpack overwrite read-only files?如何让 maven unpack 覆盖只读文件?
【发布时间】:2020-10-31 08:30:26
【问题描述】:

我的 maven 构建使用 unpack 来提取一些包,如 zulu 或 postgres,其中包含只读文件(例如 -r-xr-xr-x pgsql/lib/libssl.so.1.0.0)。重新构建时,[WARNING] Unable to expand to file .../pgsql/lib/libssl.so.1.0.0 表示文件没有被覆盖 - 只要我不切换版本就可以(我仍然希望没有警告)。

但是,例如,如果我切换到较新的 postgres,如何解压以覆盖文件? 或者,如果这太复杂,总是覆盖文件?

请注意,包含只读文件的文件夹是可写的,因此没有技术原因不覆盖文件(删除 - 创建)。

我还希望将只读文件保持为只读,假设包所有者有原因。

https://maven.apache.org/plugins/maven-dependency-plugin/unpack-mojo.html 我发现<overWriteIfNewer> 默认情况下是真的。由于我的构建总是试图覆盖文件,我认为 overWrite 通常是正确的,它只是没有成功。

作为参考,这是我的 pom.xml 的相关部分

                        <id>unpack</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.postgresql</groupId>
                                    <artifactId>${postgresql.artifactId}</artifactId>
                                    <version>${postgresql.3rdparty.version}</version>
                                    <classifier>binaries</classifier>
                                    <type>tar.gz</type>
                                    <outputDirectory>${postgresql.install.folder}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>

【问题讨论】:

    标签: maven overwrite unpack plexus


    【解决方案1】:

    好吧,虽然不是问题的真正答案,但我发现当前行为是由于Plexus Archiver 只是覆盖文件而不删除它(如果存在)。 这意味着 maven unpack 扩展不能很好地处理包含只读文件的包。我需要清除目标文件夹并在每次(重新)构建时提取包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多