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

时间:2015-01-30 21:11:57

标签: java jar build gradle

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

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

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

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

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

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

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

但这不起作用,因此资源中的任何内容都不是副本。 所以问题是,如果我有两个文件夹,其中一些文件有一些相同的名称,我怎么能在jar中包含他们的文件,所以我从两个文件夹中获取文件但是对于两者中的文件我只得到第二个文件夹中的版本。 / p>

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

要避免JAR中的重复文件,您可以在任务上将重复项策略设置为EXCLUDE

duplicatesStrategy = DuplicatesStrategy.EXCLUDE

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