У меня есть проект с подмодулем a: jar
, которому нужен другой набор зависимостей, в зависимости от того, для какой платформы он скомпилирован. Код одинаковый для всех платформ. Например. на Android библиотека httpcomponents уже включена в ОС, а я должен включить ее в сборки для сред J2SE. У меня также есть еще один подмодуль, который собирает несколько подмодулей и их зависимости в архив. Как я могу надежно настроить подмодуль сборки, чтобы взять все подмодули, скомпилированные для соответствующей платформы, и их зависимости, подходящие для этой платформы?
Я попытался использовать профили для создания a: jar: android
и a: jar: j2se
. Однако объявление зависимости от одного из них приведет к странным зависимостям в сборке. То есть dependency: tree
проекта сборки иногда включает зависимости от a: jar: j2se
(не имеет значения, объявил ли я использование a: jar : android
или a: jar: j2se
в сборке), а иногда и другое. Он изменился (часто) после того, как я обновил jar-файлы a
в локальном репозитории. Переключение в сборочном проекте также использует профили.
Я мог бы решить эту , применив те же зависимости к профилям проекта сборки , которые необходимы для профиля отдельных подмодулей. Но поскольку мне приходится повторяться в POM, вероятно, есть более изобретательный способ добиться этого. Поскольку я новичок в maven, мне интересно, что это такое? Я не хочу дублировать код (это было бы даже более повторяющимся, поскольку код остается прежним), и мне не нравится дублировать части POM, поскольку их изменение из-за обновлений версии может быть сложным.
Некоторые конкретные материалы: Зависимости от a: jar
POM:
.....
org.apache.httpcomponents
httpmime
4.0.1
compile
org.apache.httpcomponents
httpclient
....
android
com.google.android
android
1.6_r2
provided
java
org.apache.httpcomponents
httpclient
4.0.1
compile
commons-codec
commons-codec
1.3
compile
Профили проекта сборки (в котором используется подключаемый модуль Maven Assembly):
android
a
a
${project.version}
android
jar
com.google.android
android
1.6_r2
provided
java
org.apache.httpcomponents
httpclient
4.0.1
compile
commons-codec
commons-codec
1.3
compile
a
a
${project.version}
java
jar
Я бы хотел избавиться от отмеченные объявления зависимостей.