Этот вопрос на самом деле не о лучших практиках или архитектуре, а о том, как конкретно настроить Хадсона и Мейвена для достижения того, чего я хочу. Я немного растерялся.
У меня есть приложение Java, которое использует SWT, и мне нужно создавать копии для разных платформ. На данный момент все, что мне нужно, это Linux i386 и Linux amd64, но в будущем мне нужно также добавить Windows x86 / x64, поэтому я хочу убедиться, что я настроил ее «правильно» в первый раз.
Мое приложение содержит все зависимости и другую информацию, перечисленную в Project pom.xml, включая различные файлы SWT, которые нужно получить в зависимости от операционной системы, архива и семейства.
У меня вопрос: как мне собрать сборки для linux i386 и linux amd64 с минимальным дублированием конфигурации? Прямо сейчас я делаю следующее:
- Project определяет все зависимости в pom.xml, и этот проект настроен на сборку в Hudson и развертывание получившегося .jar на Nexus
- Builder-linux-i386 запускается после Project и задает любые файлы JNI для i386 и использует плагин de.tarent maven-pkg-plugin для извлечения jar-файла проекта из Nexus и сборки его вместе со всеми зависимостями в один «толстый» jar файл, а затем в файл .deb для установки.
- Builder-linux-amd64 делает то же самое, но для файлов amd64
Я пытался указать, какие зависимости использовать в проектах Builder, добавив -P profilename
к своим проектам Hudson, где profilename
- это профиль, названный в Project pom. Maven, похоже, не нравится это и печатает, что он не активирует этот профиль. Используется только профиль по умолчанию из Project's pom.
Как правильно это настроить? Я хочу, чтобы все мои зависимости были указаны в моем Project pom, и у меня есть проект Hudson, который компилирует jar для этого проекта и развертывает его в Nexus, а затем независимых проектов, которые собирают этот jar и собирают его вместе. с платформенно-зависимыми файлами для выпуска. Я не хочу многократно создавать весь оригинальный проект и не хочу, чтобы у меня была тонна дублированной информации о конфигурации или скопированных копий.
У меня это работает для unix-amd64 только потому, что это машина сборки, поэтому Maven ориентируется на эту архитектуру. Кроме того, я чувствую, что установка не так чиста, как могла бы быть. Совет?