我们使用 Buildr 将应用程序打包为.war文件。为了进一步简化自动化部署过程,我想有条件地选择这两个文件之一(从目录中src/main/resources
)......
database-hsql.properties
database-postgres.properties
...并将其包含在名为 .war 的结果中database.properties
。(在 WAR 内部的同一个地方,即WEB-INF/classes/
,从src/main/resources
现在开始的文件结束的地方。)
有什么简单的方法可以做到这一点吗?任何方法都可以——例如参数化“包”(以某种方式)或定义两个不同的任务/目标(我不确定术语),例如“package-hsql”和“package-pgsql”——只要它有效并且很简单。
的相关位buildfile
:
load 'dependencies'
require 'buildr/hibernate'
desc "..."
define "foo" do
project.version = VERSION_NUMBER
project.group = GROUP
manifest["Implementation-Vendor"] = COPYRIGHT
compile.with WICKET,GUAVA,GSON, ... [many more libs]
test.with MOCKITO
resources
test.compile.with SERVLET,_('src/main/webapp'),_('src/main/resources')
package(:war).with(:libs=> [WICKET,GUAVA,GSON, ... ])
end
额外的问题:如何在这两种情况下执行任意 shell 命令(我会使用涉及例如>>
or的东西sed
)来更改另一个配置文件?(我还想applicationContext.xml
从另一个文件“注入”一些 db 设置;这比在 VCS 中保留该文件的两个副本具有基本相同的内容更好。)
对不起,如果这太基本了;我是 Buildr 的新手,并不真正了解 Ruby。(是的,使用当前团队成员都不精通的工具并不是最佳情况……)如果有任何需要澄清的地方,请指出!