gpt4 book ai didi

java - 在gradle中创建jar时如何覆盖文件

转载 作者:行者123 更新时间:2023-12-02 05:01:32 27 4
gpt4 key购买 nike

我们有一个 java 项目,在 src/main/resources 下有一些默认配置,并且在 project_root/configDeploy 下有覆盖

对于我们的mapred jar,我们想要复制两个配置,但允许配置/部署文件覆盖资源中的默认值。所以我们可以在resource中有myconf.xml,在deploy中有myconf.xml,但是生成的mapred fat jar只有myconf.xml

我尝试了两种不同的方法,尝试部署副本并覆盖资源conf:

from 'src/main/resources'
from 'conf/deploy'

但这会在 jar 内添加两个文件,所以它不起作用

然后我尝试仅添加 src/main/resources 中不在 conf/deploy 中的文件,例如:

into('conf'){
from{
'src/main/resources'
}
exclude{file('deploy/conf/')}
}
into('conf'){
from{
'deploy/conf'
}
}

但这不起作用,因此资源中的配置都不是副本。所以问题是,如果我有两个文件夹,其中一些文件具有相同的名称,我如何将它们的文件包含在 jar 中,以便我从两个文件夹中获取文件,但对于两个文件夹中的文件,我只获取第二个文件夹中的版本。

感谢您的帮助!

最佳答案

为了避免 JAR 中出现重复文件,您可以在任务中将重复策略设置为 EXCLUDE

duplicatesStrategy = DuplicatesStrategy.EXCLUDE

这将导致后续添加文件的尝试被忽略。因此,如果您希望“deploy/conf”中的文件优先,您应该首先定义该复制规范。

关于java - 在gradle中创建jar时如何覆盖文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28244690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com