0

我的 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>
4

1 回答 1

0

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

于 2020-07-15T21:39:11.350 回答