Olá Pessoal,
No post de hoje vamos ver como gerar um artifacts usando Maven e o Github, ou seja, vamos dizer que você precisa fazer um deploy e quer deixar isso automático e que o .jar, por exemplo, já fique na pasta específica.
Lets go…
Certamente você não vai querer fazer deploy manualmente, certo? E gostaria que esse fosse integrado com o seu build e seu repositório. Na semana passada eu passei por uma situação assim e fui pesquisar para ver como fazer. Veja o contexto a seguir.
Contexto
Estava concluída a primeira versão da API para JSF: a I4JSF, mas não sabia como fazer um deploy direto para o GitHub, ou seja, ao chamar o comando mvn deploy gostaria que o artifact já fosse publicado no Github. É muito simples. Vejamos os passos a seguir:
Passo 1 – Altere o arquivo setting.xml do maven, normalmente localizado em .m2/config. Adicione nas tags <Servers/>
<server>
<id>github</id>
<username>SEU_USERNAME</username>
<password>SUA_SENHA</password>
</server>
Passo 2 – Altere o pom.xml do seu projeto
<!– tell the github site-maven–plugin about the new server –>
<properties>
<!– github server corresponds to entry in ~/.m2/settings.xml –>
<github.global.server>github</github.global.server>
</properties>
<!– Finally, tell the site plugin where the artifact has been deployed –>
<distributionManagement>
<repository>
<id>github</id>
<name>GitHub ${project.artifactId} Repository</name>
<url>https://raw.github.com/camilolopes/${project.artifactId}/mvn-repo</url>
</repository>
</distributionManagement>
Adicione o plugin site-maven-plugin ao pom.xml
<!– Plugin for GITHUB –>
<plugin>
<groupId>com.github.github</groupId>
<artifactId>site-maven–plugin</artifactId>
<version>0.8</version>
<configuration>
<message>Maven artifacts for ${project.version}</message>
<noJekyll>true</noJekyll>
<outputDirectory>${project.build.directory}/mvn-repo</outputDirectory>
<branch>refs/heads/mvn-repo</branch>
<includes>
<include>**/*</include>
</includes>
<repositoryName>your_repository_name</repositoryName>
<repositoryOwner>YOURUSERNAME</repositoryOwner>
</configuration>
<executions>
<execution>
<goals>
<goal>site</goal>
</goals>
<phase>deploy</phase>
</execution>
</executions>
</plugin>
Passo 3 – Adicione o plugin de deploy
<!– setting deploy in github artifacts –>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
<configuration>
<altDeploymentRepository>internal.repo::default::file://${project.build.directory}/mvn-repo</altDeploymentRepository>
</configuration>
</plugin>
Não se preocupe com a branch mvn-repo, ela será criada automaticamente.
Passo 4 – Execute mvn clean deploy e aguarde o download dos plugins.
Acesse o GitHub e veja que a branch mvn-repo foi criada. É onde ficam os .jars:
Pronto, agora ao executar mvn deploy o .jar já vai automaticamente para o GitHub. Fantástico, não?
Adicionando dependência em outro projeto
Vamos dizer agora que um projeto X decidiu usar seu .jar via maven. O que fazer? Veja a seguir o que ele precisa adicionar no pom.xml:
<!– I4JSF –>
<repository>
<id>I4JSF-mvn–repo</id>
<url>https://raw.github.com/camilolopes/I4JSF-API/mvn-repo/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
E nas dependências:
<dependency>
<groupId>com.i4jsf</groupId>
<artifactId>i4jsf</artifactId>
<version>1.0.0</version>
</dependency>
Vou ficando por aqui.
See ya!!!