Проект Maven получает версию другого проекта Maven? - PullRequest
0 голосов
/ 17 января 2019

Я должен maven проекты клиента и сервера. Версия сервера всегда является версией клиента. Эта «версия» не является версией maven-артефакта клиента. Это больше свойство от клиента, что мне нужно на сервере. Он создается из свойства pom и номера сборки или «trunk-snapshot» (когда клиент собирается на компьютере разработчика).

Клиентская версия создается во время сборки (сборка Jenkins или локальная чистая установка mvn). Мне нужно прочитать версию клиента на модуле сервера, используя Java.

Какой будет лучший подход?

Я пытался создать текстовый файл как артефакт клиента, но не смог найти простой способ прочитать его на сервере.

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Самое простое решение - определить свойство в родительском файле pom и сослаться на него как в клиентском, так и в серверном модулях.

pom.xml
server/pom.xml
client/pom.xml

Теперь родительский pom.xml будет иметь ниже.

<properties>
    <my.custom.version>1234</my.custom.version>
</properties>

В файлах pom.xml сервера и клиента вы можете ссылаться на него, как показано ниже.

<version-needed-tag>${my.custom.version}</version-needed-tag>
0 голосов
/ 19 февраля 2019

Я решил это с помощью свойства-maven-plugin в клиенте, чтобы создать файл свойств, который в итоге окажется в client.jar. Я прочитал это на сервере, используя ClassLoader.getSystemResourceAsStream ("my.properties").

0 голосов
/ 17 января 2019

Просмотрите документацию POM здесь: https://maven.apache.org/guides/introduction/introduction-to-the-pom.html. Конкретно посмотрите на агрегацию проекта: https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Aggregation

То, что вы, вероятно, хотите, это родительский POM, который затем имеет модуль для клиента и модуль для сервера.

Структура вашего проекта будет выглядеть так:

./pom.xml <-- this is your parent pom, it has version info, module entries for client/server, and dependencies that are used by both the client and server
./server
./server/pom.xml <- this is the pom for your server
./client
./client/pom.xml <- this is the pom for your client

Затем вы можете определить версию в родительском pom, а ваш клиент и сервер наследуют ее. Чтобы определить свой номер сборки, вы можете использовать решение, подобное предложенному lkamal, изменив свойство версии Maven.

Другой вариант, который стоит рассмотреть, - это как вы генерируете свои номера сборки. Плагин Build Number для Maven может генерировать произвольный последовательный номер сборки или генерировать его из версии SCM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...