terça-feira, 23 de fevereiro de 2010

Maven - Estrutura básica de um POM

Dando continuação ao Maven vamos começar a pensar em algo mais, por exemplo, vou mostrar como construí o POM base dos meus projetos, chamado de: Gaia Parent.

Primeiramente num projeto Maven precisa-se de basicamente 3 coisas:
- groupId: indica a qual grupo de projetos este projeto faz parte;
- artifactId: caracteriza o projeto atual;
- version: indica a versão na qual este projeto se encontra.

No Gaia Parent:
- groupId: net.sf.gaia
- artifactId: gaia-parent
- version: 1.0

Logo teriamos basicamente o seguinte XML:
<project>
    <modelVersion>
4.0.0</modelVersion>
    <artifactId>
gaia-parent</artifactId>
    <groupId>
net.sf.gaia</groupId>
    <version>
1.0</version>
   
    <name>
Gaia Parent</name>
    <description>
Parent pom for Gaia Projects</description>
    <packaging>
pom</packaging>
</project>
Esse simples XML já define o projeto do Gaia Parent no Maven, onde não será gerado um jar no final da compilação. Veja que a tag packaging define se o projeto será apenas (como dizer? ...) um projeto de definições (pom). Se eu possuí-se códigos Java e necessitá-se que no final do processo de compilação fosse gerado um jar, teria que alterar a tag para: jar.

Mas se alguém tentar compilar este projeto nesse momento verá que ele não tem nenhuma serventia, pois não nos diz nada!

Bom, como nada? Bem é simples, o projeto Gaia Parent tem como função ser o projeto pai de todos os meus projetos. Como assim? Resposta simples: "Eu quis assim!"

Continuando, como sendo sendo um projeto na qual todos meus outros projetos farão uso eu preciso que ele possua algo que todos possam usar e que não atrapalhe a compilação dos projetos. Por isso estruturei que o Gaia Parent armazena-se principalmente a lista de repositórios de onde todos os projetos possam buscar suas dependências sem nenhum problema.

Não vou postar toda a lista de dependência, até porque ela é bem grandinha. Mas se você fizer questão de ver ou mesmo tiver o interesse de adicionar algumas no seu projeto, sugiro que olhe o POM que está versionado no SVN: download.

E para que não está com tanto saco assim de baixar o POM e olhar detalhadamente fica a versão mais compacta a baixo:
<project>
    <modelVersion>
4.0.0</modelVersion>
    <artifactId>
gaia-parent</artifactId>
    <groupId>
net.sf.gaia</groupId>
    <version>
1.0</version>
   
    <name>
Gaia Parent</name>
    <description>
Parent pom for Gaia Projects</description>
    <packaging>
pom</packaging>
   
    <repositories>
        <repository>
            <id>
ibiblio</id>
            <name>
ibiblio Maven 2 Repository</name>
            <url>
http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
        </repository>
       
        <repository>
            <id>
ibiblio legacy</id>
            <name>
ibiblio Maven 1 Repository</name>
            <url>
http://mirrors.ibiblio.org/pub/mirrors/maven</url>
            <layout>
legacy</layout>
        </repository>
   
        <repository>
            <id>
central</id>
            <name>
Maven2 Central Repository</name>
            <url>
http://repo1.maven.org/maven2</url>
        </repository>
       
        <repository>
            <id>
codehaus-repository</id>
            <name>
codehaus maven2 repository</name>
            <url>
http://repository.codehaus.org</url>
        </repository>
       
        <repository>
            <id>
MMBase</id>
            <name>
MMBase Maven 2 Repository</name>
            <url>
http://www.mmbase.org/maven2</url>
        </repository>
       
        <repository>
            <id>
Geotools</id>
            <name>
Geotools Maven 2 Repository</name>
            <url>
http://maven.geotools.fr/repository</url>
        </repository>

        <repository>
            <id>
CMS</id>
            <name>
CMS Container repository</name>
            <url>
http://www.cmscontainer.org/files/maven/</url>
            <layout>
legacy</layout>
        </repository>
       
       
<!-- Gaia developer repository for any gaia artifacts -->
        <repository>
            <id>
Gaia-repo</id>
            <name>
Gaia Developer Repository</name>
            <url>
https://gaia-framework.svn.sourceforge.net/svnroot/gaia-framework/gaia-repository</url>
            <releases> <checksumPolicy>
ignore</checksumPolicy> </releases>
            <snapshots> <enabled>
false</enabled> </snapshots>
        </repository>
    </repositories>
</project>


Nenhum comentário:

Postar um comentário