2016-07-07 3 views
0

У меня есть простая проблема, но, будучи новичком с Maven, неясно, какая из лучших практик для решения этой проблемы.Упаковка нескольких JAR с Maven путем изменения зависимости

Проект, над которым я работаю, имеет зависимость от управления архивами, который является следующим: net.sf.sevenzipjbindings.

Эта зависимость выполняется двумя артефактами: чистым Java-интерфейсом, который предоставляет интерфейс Java и другой, который является родным базовым кодом, который имеет множество вкусов в соответствии с операционной системой.

На данный момент я упаковки банки, построенной мавенны со всеми местными жителями для всех платформ, но я хотел бы быть в состоянии сделать что-то вроде:

  • при работе (так compile цели, если Я правильно) по проекту понять, использовать все платформы артефакт (так что я могу работать плавно из нескольких операционных систем
  • при упаковке построить 3 различных JAR с зависимостями, составленных с помощью интерфейса Java + конкретной платформы артефакта

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

+0

Трудно понять, что именно вам нужно, но если ваш проект является библиотекой, обычный подход заключается в том, чтобы упаковать свой собственный баннер только с зависимостью от интерфейса Java и потребовать, чтобы последующий поток включал соответствующий родной драйвер, в противном случае включите их все в свою прикладную банку. – chrylis

+0

Если вам нужны разные зависимости, это означает, что у вас должны быть разные модули, которые обрабатывают это. – khmarbaise

+0

@chrylis: мой проект не является библиотекой, это приложение. В принципе, если предположить, что зависимости A B C D и E, мне нужно скомпилировать, используя AB и экспортировать 3 JAR с AC, AD и AE. Но эти зависимости берутся непосредственно из репозитория Maven, они не являются моими собственными пакетами. – Jack

ответ

0

Это звучит, как вы хотите, мульти-модуль Maven построить:

- myapp 
    - myapp-engine 
    - myapp-windows 
    - myapp-linux 

Модуль myapp-engine должен зависеть от external-library-api и myapp-windows модуль должен зависеть от myapp-engine и external-library-windows. Поскольку на самом деле вы запускаете приложение только для определенной ОС для любого запуска (даже в разработке), нет причин не запускать модуль, специфичный для ОС. Современные IDE не должны иметь проблем с отладкой в ​​отдельный модуль в многомодульной сборке.

Смежные вопросы