2016-06-23 3 views
1

Я управляю проектом Maven POM, который (как обычно, с проектами POM) состоит из 1 файла: pom.xml. Существует несколько других проектов, которые наследуют настройки из этого ПОМ. Родительский pom не работает как агрегатор; в нем нет модулей.Исправление исходного кода на Maven Parent POM

Поскольку проект POM имеет разные версии и историю версий, чем проекты, зависящие от него, мне кажется логичным помещать его в отдельный репозиторий SCM. Идея заключается в том, что автоматическое задание сборки будет инициировано на коммит, которое затем может привести к выпуску нового POM в центральный репозиторий артефактов (Nexus). Это приводит к ситуации, когда у меня есть репозиторий Git с 1 файлом.

Вопрос: Является ли это нормальным/желательным способом обработки исходного кода проекта POM?

+2

Да, это так. Потому что этот pom представляет собой артефакт, который используется другими ... – khmarbaise

ответ

1

Обычный родительский pom (или предприятие), который считается материальным (или предпринимателем), должен рассматриваться как отдельный продукт, это артефакт самостоятельно, с его собственным жизненным циклом и заданием CI (публикация его в репозитории Maven, например Nexus в вашем случае) и как таковой также с собственным репозиторием управления версиями.

Кроме того, это также не может быть репозиторий с одним файлом, файл essensial pom.xml, но также предоставить дополнительные ресурсы. Например, a sitefolder, с его файлом site.xml с указанием дополнительного отчета или раздела. В случае репозитория git он должен также предоставить хорошо документированный файл README.md.


Из опыта, так как глобальный Maven родительский POM используется многими различными проектами, это также хорошо, чтобы заботиться о его версий и примечания к выпуску. По этим причинам я хотел бы предложить, чтобы иметь следующее:

  • site папка со следующей site.xml конфигурации (в качестве примера):
    <?xml version="1.0" encoding="UTF-8"?> 
    <project xmlns="http://maven.apache.org/DECORATION/1.4.0" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://maven.apache.org/DECORATION/1.4.0 
             http://maven.apache.org/xsd/decoration-1.4.0.xsd"> 
        <body> 
         <menu ref="reports" /> 
         <menu name="Release Notes"> 
          <item name="0.0.1" href="release-notes-0.0.1.html" /> 
         </menu> 
        </body> 
    </project> 
    
  • Дополнительного markdown папки в site обеспечивая примечаний к выпуску для каждой версии. Например, сформируйте href выше, будет загружен следующий файл: release-notes-0.0.1.md.vm, содержащий информацию о его выпуске, который затем попадет на сайт Maven POM.

Как вы можете видеть, репозиторий может содержать более одного файла pom.xml даже для суперпорогового ПОМ. Следовательно, он всегда должен иметь свой собственный реестр версий (git в этом случае).


Дополнительные примечания:

  • Глобальный родитель ПОМ, как правило, применяя -parent суффикс (например, maven-parent, spring-parent, hibernate-parent).Хотя не стандарт, это де факто конвенция, рекомендуется следовать
  • Предпочтительно, чтобы следовать Maven official layout для секций П
  • Из личного опыта, избежать SNAPSHOT версии: лучше иметь несколько незначительных (но фиксировано) версий общий родительский POM, а не неустойчивый или потенциально влияющий на версии SNAPSHOT: это глобальный родительский pom, его цель - обеспечить управление и общую минимальную конфигурацию, он не должен вводить нестабильность.