Мы используем Buildr для упаковки приложения в файл .war .Чтобы еще больше упростить процесс автоматического развертывания, я бы хотел условно выбрать один из этих двух файлов (из каталога src/main/resources
) ...
database-hsql.properties
database-postgres.properties
... и включить его в получившийся .war с именем database.properties
.(В том же месте внутри WAR, а именно WEB-INF/classes/
, где теперь находятся файлы из src/main/resources
.)
Есть ли простой способ сделать это?Подойдет любой подход - например, параметризация «пакета» (как-то) или определение двух разных задач / целей (я не уверен в терминологии), таких как «пакет-hsql» и «пакет-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
Бонусный вопрос : как выполнить произвольную команду оболочки (я бы использовал что-то, включающеенапример, >>
или sed
) в каждом из двух случаев внести изменения в другой файл конфигурации?(Я также хотел бы «вставить» некоторые настройки БД в applicationContext.xml
из другого файла; это было бы предпочтительнее, чем хранить две копии этого файла в VCS с почти одинаковым содержимым.)
Извините, если этослишком простой;Я новичок в Buildr и не знаю Руби.(И да, использование инструмента, которым не владеет ни один из членов команды, не является оптимальной ситуацией ...) Если что-то требует уточнения, укажите это!