У нас есть пара проектов, которые зависят друг от друга. Так, например, у нас есть панель проекта, которая опирается на проект foo. Проект foo - это SDK (базовая библиотека), который мы хотим включить во все остальные проекты, потому что мы обнаруживаем, что решаем одни и те же проблемы снова и снова.
В настоящий момент проект foo и bar создаются независимо, а проект bar имеет ссылку на foo.dll и хранится в папке bar \ lib в SVN. Поэтому, если мы внесем какие-либо изменения в проект foo, мы должны взять последнюю сборку, проверить проект bar, скопировать новые DLL и снова зафиксировать. Это немного руководство и раздражает. Тем более, что у нас сейчас около 3 или 4 проектов, использующих библиотеки foo.
Я не хочу совать ВСЕ в одно решение, потому что это кажется немного глупым. Проект foo не должен так часто меняться и предоставляет SDK. Они не связаны друг с другом. Мы уже держим связанные проекты вместе в решениях. У нас уже есть несколько решений с 4-5 проектами с их тестовыми проектами. Объединение всего вместе создаст решение с 40-50 проектами, и это похоже на кошмар.
Чего я хотел бы добиться с помощью TeamCity, так это того, что если в Foo вносятся какие-либо изменения, он автоматически запускает новую сборку панели, используя обновленные библиотеки DLL Foo. Таким образом, если кто-то вносит решающее изменение, мы сразу же обнаруживаем. Затем виновник должен либо исправить свою ошибку, либо внести необходимые изменения во все зависимые проекты.
Что мы сделали до сих пор, так это то, что большинство наших решений уже созданы в TeamCity, выполняются модульные тесты и создаются артефакты. Я попытался настроить зависимость артефакта в конфигурации сборки бара в сборке foo. Это должно скопировать foo \ build \ release \ foo.dll в bar \ lib \ foo.dll. Мы получаем ошибки в настоящее время, заявляя
Failed to resolve artifact dependency xxx ... java.io.FileNotFoundException ... Access Denied
Как лучше всего делать то, что мы пытаемся? Мы идем по правильному пути? Если мы делаем это правильно, как мы решаем эту ошибку?