Instale o POM pai sem criar módulos filhos

115

Eu tenho um POM pai em um projeto Maven, com esta estrutura:

             parent
               |
        ---------------
        |             |
      child1       child2

Desejo instalar o POM do "pai" no REPO local para permitir que child1 faça algumas alterações que fiz no dependencyManagement, mas não posso fazer uma "instalação limpa" normal porque "child2" está quebrado e não será compilado.

Qual é a maneira correta de fazer isso com o maven (além de ir ao pom pai e comentar o módulo "filho2" ).

Mr.Eddart
fonte

Respostas:

191

Use a opção '-N' no comando mvn.

De mvn -h:

-N, - não recursivo Não recursivamente em subprojetos

Guillaume Polet
fonte
1
A opção '-N' ou '--non-recursive' significa não recursivamente em subprojetos.
STB Land
36

Embora Guillaume esteja realmente certo e essa seja a opção correta, eu pessoalmente recomendo manter seu pai como um módulo separado.

Acho que a melhor abordagem para herança é a seguinte:

aggregator
|- module1/ (extends parent)
| |- pom.xml
|- module2/ (extends parent)
| |- pom.xml
|- parent/
| |- pom.xml
|- pom.xml

Desta forma, você sempre pode instalar apenas o pai, mvn clean installsem opções extras.

Você também pode ter o pai fora do agregador para que possa reutilizá-lo entre mais projetos.

Existem inúmeros benefícios em manter o pai e o agregador como duas coisas separadas. Mas no final, você escolhe o que é melhor para seu projeto / ambiente.

Carlspring
fonte
1
Lutei com esse problema por horas, e descobri que alguns projetos estão funcionando dessa forma, como o Apache Sling, JackRabbit e Artifactory.
accuya
Ele isolou a herança do módulo maven (dependências, propriedades, etc.) da construção em lote (módulos filhos).
Marinheiro Danubiano
4
Isso é considerado uma prática recomendada? Algum blog ou outro sobre essa abordagem?
Trenó de
1
@ArtB Você se deparou com um artigo desses nesse meio tempo?
Tomislav Nakic-Alfirevic
4
@MaximilianSchulz: Não existe um mundo perfeito, como se costuma dizer ... Essa é apenas uma opção de fazê-lo.
carlspring