Recebi um projeto maven para compilar e implantar em um servidor tomcat. Nunca usei o maven antes de hoje, mas tenho pesquisado bastante no Google. Parece que os pom.xml
arquivos de nível superior neste projeto têm o tipo de embalagem definido como pom
.
O que devo fazer depois mvn install
para implantar esse aplicativo? Eu esperava encontrar um war
arquivo em algum lugar ou algo assim, mas acho que estou procurando no lugar errado ou faltando uma etapa.
Respostas:
pom
é, basicamente, um recipiente de submódulos, cada sub-módulo é representado por um subdirectório no mesmo directório comopom.xml
compom
a embalagem.Em algum lugar, aninhado na estrutura do projeto, você encontrará artefatos (módulos) com o
war
empacotamento. O Maven geralmente cria tudo em/target
subdiretórios de cada módulo. Então, depois demvn install
olhar para otarget
subdiretório em um módulo comwar
embalagem.Claro:
funciona igualmente bem ;-).
fonte
O empacotamento pom é simplesmente uma especificação que afirma que o artefato principal não é uma guerra ou jarro, mas o próprio pom.xml.
Muitas vezes, é usado em conjunto com "módulos", que normalmente estão contidos nos subdiretórios do projeto em questão; no entanto, também pode ser usado em certos cenários em que nenhum binário primário foi criado para ser construído, todos os outros artefatos importantes foram declarados como artefatos secundários
Pense em um projeto de "documentação", o artefato primário pode ser um PDF, mas ele já foi construído, e o trabalho para declará-lo como um artefato secundário pode ser desejado na configuração para informar ao maven como criar um PDF que não precisa compilado.
fonte
O empacotamento de
pom
é usado em projetos que agregam outros projetos e em projetos cuja única saída útil é um artefato anexado de algum plug-in. No seu caso, eu acho que o seu pom de nível superior inclui<modules>...</modules>
a agregação de outros diretórios, e a saída real é o resultado de um dos outros (provavelmente sub) diretórios. Se codificado sensivelmente para esse fim, terá uma embalagem dewar
.fonte
Para simplesmente responder sua pergunta quando você faz um mvn: install , o maven cria um artefato empacotado com base em ( atributo de empacotamento em pom.xml). Após a instalação do maven, você pode encontrar o arquivo com a extensão .package
fonte
Empacotar um artefato como POM significa que ele possui um ciclo de vida muito simples
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Isso é útil se você estiver implementando um arquivo pom.xml ou um projeto que não se encaixa nos outros tipos de pacotes.
Utilizamos embalagens pom para muitos de nossos projetos e vinculamos fases e objetivos extras, conforme apropriado.
Por exemplo, alguns de nossos aplicativos usam:
Quando você mvn instala o aplicativo, ele deve ser adicionado ao seu repositório .m2 localmente. Para publicar em outro lugar, você precisará configurar as informações corretas de gerenciamento de distribuição. Você também pode precisar usar o plug-in auxiliar do maven builder, se os artefatos não forem anexados automaticamente pelo Maven.
fonte
Sugiro ver o exemplo clássico em: http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once
Aqui my-webapp é um projeto web, que depende do código no projeto my-app. Portanto, para agrupar dois projetos em um, temos o pom.xml de nível superior, que menciona quais são os projetos (módulos conforme a terminologia do maven) a serem agrupados finalmente. O pom.xml de nível superior pode usar embalagens pom.
O my-webapp pode ter empacotamento de guerra e dependência do meu aplicativo. my-app pode ter embalagem jar.
fonte
Caso de uso da vida real
Em uma empresa pesada em Java, tínhamos um projeto python que precisava entrar em um repositório de artefatos Nexus. O Python realmente não tem artefatos, então, bastava querer .tar ou .zip dos arquivos python e pressionar. O repositório já tinha integração
<packaging>pom</packaging>
com o maven , por isso usamos o designador com o plugin maven assembly para empacotar o projeto python como a.zip
e carregá-lo.As etapas estão descritas nesta postagem do SO
fonte
A embalagem “pom” nada mais é do que o contêiner, que contém outros pacotes / módulos como jar, war e ear.
se você executar qualquer operação no pacote / contêiner externo, como o mvn clean compile install. então os pacotes / módulos internos também recebem uma instalação de compilação limpa.
não é necessário executar uma operação separada para cada pacote / módulo.
fonte
https://maven.apache.org/pom.html
O tipo de embalagem necessário para pom nos projetos pai e agregação (multi-módulo). Esses tipos definem os objetivos vinculados a um conjunto de estágios do ciclo de vida. Por exemplo, se a embalagem for jar, a fase do pacote executará o objetivo jar: jar. Se a embalagem for pom, o objetivo executado será o site: attach-descriptor
fonte
O POM (Modelo de Objeto do Projeto) nada mais é do que o script de automação para a construção do projeto, podemos escrever o script de automação em XML, os arquivos do script de construção são nomeados difrenetly em diferentes ferramentas de automação
como chamamos build.xml em ANT, pom.xml em MAVEN
MAVEN pode empacotar frascos, guerras, ouvidos e POM, algo novo para todos nós
se você quiser verificar O QUE É POM.XML
fonte