Недавно я перенесла приложение на платформе NetBeans (NBP) из Ant в Maven. Я в значительной степени вычислил Maven, но есть одна вещь, от которой я все еще не могу оторваться, и это версия/соглашение.Проблемы с AutoUpdate с использованием приложения Mavenized NetBeans Platform
Кажется, что все в мире Maven с большим проектом Maven, состоящим из нескольких модулей, используют родительский pom, в котором они определяют версию, которая затем наследуется всеми дочерними помпами (то есть все модули NBP в проекте Maven NetBeans RCP).
Например, взгляните на конечный результат примера проекта в Maven книге: http://books.sonatype.com/mvnex-book/reference/optimizing-sect-final-poms.html
Вы увидите одну версию, определенную родительском ПОМ,
<groupId>org.sonatype.mavenbook.optimize</groupId>
<artifactId>simple-parent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
, который наследуется каждый модуль ребенка, указав родитель, а не с помощью какого-либо тега своего собственного:
<parent>
<groupId>org.sonatype.mavenbook.optimize</groupId>
<artifactId>simple-parent</artifactId>
<version>1.0</version>
</parent>
и его внутреннего (в пределах проект) зависимости каждого ребенка модуль определяет это по отношению к проекту:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>simple-weather</artifactId>
<version>${project.version}</version>
</dependency>
Это означает, что вы не можете обновить один модуль на более высокую версию, потому что она будет искать зависимости с тем же номером версии, которые не существовать. Не говоря уже о том, что использование отдельной версии для любого из ваших дочерних модулей дает вам головные боли при использовании версии-maven-plugin, потому что вы в конечном итоге микшируете ваши зависимости.
Это, похоже, полностью противоречит философии AutoUpdate/Lifecycle/Release платформы NetBeans. Там я могу обновить один модуль и сгенерировать новый файл updates.xml («Пакет как NBM»), и при загрузке в репозиторий AutoUpdate клиент увидит только одно обновление. Похоже, что если вы сделаете это способом Maven (mvn nbm:autoupdate
), все модули получают версию bump, так что вся модель автоматического обновления через модули идет вниз.
Надеюсь, что я ошибаюсь, и есть функция восстановления отличной функциональности autoupdate, которая поставляется с платформой, своего рода дополнительный номер версии, который автоматически добавляется к номеру major.minor.revision или некоторому интеллектуальному способу переопределить OpenIDE-Module-Specification-Version = major.minor.revision
между версиями релизов. Есть или мне нужно выпустить новую версию моего приложения для каждого крошечного обновления в клиентский модуль?