2014-06-13 108 views
5

我正在使用heroku的config var插件(请参阅https://devcenter.heroku.com/articles/config-vars)。添加单个文件到gradle资源

它允许我使用.env文件,我不推送源代码控制来定义heroku环境。

所以当我在heroku上时,我可以通过System.properties访问合理的信息。

在开发中,我想从这个文件中读取,所以最好是如果它在我的类路径中。

的.ENV文件是在我的项目的根,所以我不能使用这样的:

sourceSets { 
    main { 
     resources { 
      srcDirs = ['src/main/resources', '/'] 
     } 
    } 
} 

什么是包含一个文件到gradle这个资源最简单的方法?

回答

1

我最终什么事做的是增加项目的根目录下的资源文件夹只包含我感兴趣的文件:

sourceSets.main.resources { srcDir file('.') include '.env' } 

似乎这样的伎俩。我不知道这是最好的解决方案以为

+0

如果我有多于一个目录,如'A,B,C',对于dir'C',我只需要'C/my.properties',但对于'A'和'B',我需要所有文件 – enyo

+0

如果你想在罐子里给它另一个名字,你会做什么? –

+2

该解决方案的工作原理是,但是(如上所述),“包含”模式被用于所有srcDirs,而不仅仅是一个。我想知道如何将一个文件添加到现有的srcDirs中。 – Marwin

3

与其他网站的另一个秘诀在这里合并以前的回答后,我想出了以下解决方案:

sourceSets { 
    specRes { 
    resources { 
     srcDir 'extra-dir' 
     include 'extrafiles/or-just-one-file.*' 
    } 
    } 
    main.resources { 
    srcDir 'src/standard/resources' 
    srcDir specRes.resources 
    } 
} 
processResources { 
    rename 'some.file', 'META-INF/possible-way-to-rename.txt' 
} 

我仍然不知道是否有一些更好的办法。

+1

这样做的副作用是也添加了一个新的'specResClasses'任务,这可能不是您想要的。我在Gradle论坛上重复了这个问题,看看有没有更好的方法:https://discuss.gradle.org/t/how-to-add-a-single-extra-resource-to-the-existing-资源/ 17070 – whaleberg

1

早先的答案似乎比我所希望的更复杂,所以我询问了gradle forums,并得到了来自Gradle核心开发人员之一的Sterling Green的回复。

他建议直接配置processResources

processResources { 
    from(".env") 
} 

他还提到,它可能是一个坏主意,包括项目的根直接输入。