Существует ли инструмент, подобный Maven, который работает на многих языках? - PullRequest
11 голосов
/ 08 декабря 2010

Я пытаюсь найти такой инструмент, как Maven (стандартизированная сборка и упаковка, репозиторий и т. Д.), Который поддерживает больше, чем Java (и C / C ++), в частности, Python и .NET (C #). Особенно хорошее управление зависимостями желательно.

У нас работает смешанная лавка языков, и текущая отечественная "über-buildsystem" на основе Python, вероятно, должна исчезнуть. Обратите внимание, что он не пытается выполнять детальные сборки, а только обрабатывает зависимости между модулями / проектами, загружает скомпилированные артефакты (несколько сотен мегабайт на библиотеку в случае C ++) и вызывает msbuild / easy_install / etc для существующих .sln / .vcproj / etc файлы, чтобы получить реальную сборку.

Это работает, но в основном потому, что я его построил и знаю, что он может и не может делать, и расширяю его, когда мне нужны новые вещи. Это не очень помогает другим разработчикам, и я чувствую, что мы не должны на этом фокусироваться. (Хотя это не , что много работы, и, кажется, нет убедительной альтернативы.)

Итак:

  • Установочные инструменты Python, похоже, предназначены только для Python (и некоторых компиляторов c ++ -> .pyd).
  • Maven в основном использует Java, а некоторые C / C ++, в основном для JNI.
  • Для C / C ++ нет ... ничего? (qmake / cmake для строительства)
  • Для .NET есть некоторые вещи, но хорошо ли они работают вне Visual Studio и набора инструментов MSFT?

Создание другого Maven (но с более гибкой поддержкой) поверх Ant (в основном с использованием Beanshell) - это то, что я уже сделал. Текущий Python-материал является ответвлением от этого.

Обновление:

Ant + Ivy потребовалось бы построить немного сверху, как я указывал выше, но, вероятно, это лучшая основа, чем у нас сегодня, так как мы получаем больше задач по сборке и репо с артефактами из коробки. (См. Maven Like управление зависимостями для C ++ )

Вся помощь тепло ценится!

1 Ответ

1 голос
/ 10 декабря 2010

Попробуйте waf .

...