Criar archetype Maven 2.0

Olá todos. Espero que alguém no fórum possa me ajudar, pois já estou procurando há dias na net e não acho resposta nem na documentação do próprio Maven.

Estou tentando criar um archetype para uso pessoal a partir de um projeto já existente no meu workspace. O comando mvn archetype:create-from-project gera toda uma estrutura de pastas e arquivos dentro da pasta target.

Na pasta generated-sources/archetype/target/classes/META-INF/maven é criado o arquivo archetype-metadata.xml seguindo o padrão do Archetype Plugin 2.0.

Nesse arquivo, não consigo configurar os diretórios de source, test, resource e test resource da mesma forma que é feito no archetype.xml do plugin 1.0.

Também gostaria de setar o package de meu build de acordo com o groupId inserido na criação do projeto.

Alguém sabe como realizo essas duas operações?

Dae amigo, encontrei alguma coisa sobre em: https://community.jboss.org/wiki/MavenArchetypeCreationGuidelines não sei se vai lhe ser util de qualquer forma fica minha contribuição.

Abraço

Fala surfzera. Obrigado. Bem interessante mesmo esse link que vc mandou. Eu nem sabia que dava pra usar IF nas configurações de POM.

Tem outro site que encontrei com um step-by-step muito bom também, e que respondeu grande parte das minhas dúvidas, então vou compartilhar aqui.

http://www.javacodegeeks.com/2012/02/maven-archetype-creation-tips.html

  1. Configurar os diretórios de source, test, resource e test resource da mesma forma que é feito no archetype.xml do plugin 1.0.
    R. Cheguei à conclusão que é melhor usar o padrão do Maven mesmo. Embora a documentação sobre esse assunto seja bem escassa, pelo menos seguir o padrão funciona e não
    tem pq procurar cabelo em ovo.

sources = src/main/java resources = src/main/resources tests = src/test/java test resources = src/test/resources

  1. Também gostaria de setar o package de meu build de acordo com o groupId inserido na criação do projeto.
    R. Seria bem mais fácil se a documentação de criação de archetypes citasse isso, mas essa parte já é feita automática. A questão é que quando criamos a estrutura citada acima, o
    arquivo archetype-metadata.xml ficará com as seguintes seções:

<fileSets> <fileSet filtered="true" encoding="UTF-8"> <directory>src/main/java</directory> <includes> <include>**/*.java</include> </includes> </fileSet> <fileSet filtered="true" encoding="UTF-8"> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> </includes> </fileSet> <fileSet filtered="true" encoding="UTF-8"> <directory>src/test/java</directory> <includes> <include>**/*.java</include> </includes> </fileSet> <fileSet filtered="true" encoding="UTF-8"> <directory>src/test/resources</directory> <includes> <include>**/*.properties</include> </includes> </fileSet> </fileSets>

    Tudo o que precisamos fazer é incluir [i]packaged="true" [/i] nas tags [i]fileSet[/i]. Ficaria assim:

<fileSets> <fileSet filtered="true" packaged="true" encoding="UTF-8"> <directory>src/main/java</directory> <includes> <include>**/*.java</include> </includes> </fileSet> <fileSet filtered="true" encoding="UTF-8"> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> </includes> </fileSet> <fileSet filtered="true" packaged="true" encoding="UTF-8"> <directory>src/test/java</directory> <includes> <include>**/*.java</include> </includes> </fileSet> <fileSet filtered="true" encoding="UTF-8"> <directory>src/test/resources</directory> <includes> <include>**/*.properties</include> </includes> </fileSet> </fileSets>

    Também temos que atualizar os packages nas classes incluídas no build. São as classes que ficam em [i]archetype-resources/src[/i]. No meu caso ficou:
    Depois é só dar o [i]mvn clean install[/i] na pasta [i]target/generated-sources/archetype[/i] e o archetype estará no nosso repositório local.

    Espero que isso ajude as pessoas que, como eu, estão apanhando MUITO do Maven.