Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Instalação

Minimamente, o usuário precisa ajustar seu ambiente para trabalhar com o Maven. Isso implica, obviamente, na instalação do mesmo na máquina de trabalho. A instalação é um processo que se relaciona com o sistema operacional (Windows, Linux, MacOS etc) e tem questões particulares que não estão cobertos por este procedimento. Logo, vale a pena consultar detalhes no site oficial do Maven

Mas, antes de tudo, confira a instalação:

Code Block
themeConfluence
languagebash
[user@host] mvn -version
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.6.0_45, vendor: Sun Microsystems Inc.
Java home: /usr/java/jdk1.6.0_45/jre
Default locale: en_US, platform encoding: ISO-8859-1
OS name: "linux", version: "3.11.0-12-generic", arch: "amd64", family: "unix"

Linux e Windows

Caso seja necessária a instalação, em Linux (Ubuntu), basta fazer a instalação do pacote 'maven':

Code Block
themeConfluence
languagebash
[user@host] sudo apt-get install maven

Em Windows, a opção mais usada é a expansão de um arquivo zip em um diretório qualquer (C:\Program Files\MyMavenDir); ajuste de variáveis de ambiente e a edição do path do sistema. (consulte a documentação do Maven)

Eclipse

Caso o ambiente seja uma IDE, a instalação depende de um plugin e da leitura de documentação específica. No Eclipse, por exemplo, basta verificar a instalação do plugin m2e que, dependendo da versão do Eclipse, pode até já estar previamente instalado.

Ajuste para o Ambiente Tecgraf

Warning
Primeiramente, veja com o coordenador do seu projeto (e/ou suporte) a existência do seu usuário/senha nos servidores Nexus e SVN do Tecgraf. E, claro, confira o ajuste correto de permissões nesses dois servidores.

Devidamente instalado, o maven requer que você tenha definições básicas de segurança:

  1. uma senha mestre definida no arquivo adicional de segurança settings-security.xml;
  2. as definições dos servidores de SVN e Nexus com senhas de acesso criptografadas.

Estes arquivos ficam armazenados no seu diretório "M2", que está localizado normalmente dentro do seu "home" em:

  • Unix: ~/.m2 ou $HOME/.m2 ou ~<user>/.m2
  • Windows: C:\Document And Settings\<user>\.m2 ou C:\Users\<user>

Criação da Senha Mestre

Assumindo que a sua senha mestre seja: "minha_senha_mestre", use o comando:

Code Block
themeConfluence
languagebash
[user@host] mvn --encrypt-master-password minha_senha_mestre
{saslJSJKEKdklsdklsJSKWJKWJKWpI8u+9EF1iFQyJQ=}

O texto entre chaves é uma versão criptográfica da sua senha mestre e deve ser usada para ser adicionada no seu arquivo settings-security.xml.

Code Block
themeConfluence
languagexml
<settingsSecurity>
  <master>{saslJSJKEKdklsdklsJSKWJKWJKWpI8u+9EF1iFQyJQ=}</master>
</settingsSecurity>

Criação de Senhas de Servidores

Em seguida, é possível fazer a criptografia de qualquer outra senha de acesso a servidores -- a ser usada para acesso ao SVN, Git etc. O comando é bem semelhante ao anterior.

Assumindo que você deseja produzir senhas para o SubVersion e o Nexus do Tecgraf, que são respectivamente: "minha_senha_svn" e "minha_senha_nexus", basta fazer:

Code Block
themeConfluence
languagebash
[user@host] mvn --encrypt-password minha_senha_svn
{SVNLCE6DU6GtcS5P=}
 
[user@host] mvn --encrypt-password minha_senha_nexus
{NEXLCE6DU6GtcS5P=}

Da forma forma que antes, use estes textos no seu arquivo settings.xml para definir a senha aos respectivos servidores, conforme o trecho a seguir:

Code Block
themeConfluence
languagexml
<settings>
...
  <servers>
    ...
    <server>
      <id>subversion</id>
      <username>clinio</username>
      <password>{SVNLCE6DU6GtcS5P=}</password>
    </server>
    <server>
      <id>tecgraf-snapshots</id>
      <username>clinio</username>
      <password>{NEXLCE6DU6GtcS5P=}</password>
    </server>
    <server>
      <id>tecgraf-releases</id>
      <username>clinio</username>
      <password>{NEXLCE6DU6GtcS5P=}</password>
    </server>
    <server>
      <id>tecgraf-site</id>
      <username>clinio</username>
      <password>{NEXLCE6DU6GtcS5P=}</password>
    </server>
    ...
  </servers>
...
</settings>
Info

Especificamente no JavaUtils (e por convenção em outros projetos), os identificadores dos servidores são exatamente os descritos acima e devem, por convenção, ser mantidos. Isso vai evitar duplicação de blocos XML no seu arquivo.

Para conhecedores de Maven, estes identificadores são usados no parent-pom dos módulos JavaUtils. E, assim, precisam estar definidos desta forma para o correto funcionamento das estruturas de produção do projeto.

 

Note que usamos quatro definições de servidores:

  1. subversion - servidor SVN do Tecgraf;
  2. tecgraf-snapshots - servidor Nexus/Tecgraf para deploy de artefatos em modo snapshot;
  3. tecgraf-releases - servidor Nexus/Tecgraf para deploy de artefatos em modo release;
  4. tecgraf-site - servidor Nexus/Tecgraf para deploy de site documentação (gerada automaticamente) nos procedimentos.

Criação de Senha para o Jira

Especificamente no JavaUtils (e em outros projetos), os procedimentos de produção envolvem a criação de changelogs baseados nas issues fechadas em versões do Jira. Para que isso funcione adequadamente, é necessário que estejam definidas duas propriedades referentes ao usuário e à senha de acesso ao Jira. Isto é ajustado dentro da seção profile no arquivo settings.xml

Infelizmente, não existe um mecanismo tão seguro como o anterior aonde as senhas estão criptografadas. No exemplo abaixo, temos um usuário "clinio" ajustando a senha "minha_senha_no_jira".

Code Block
themeConfluence
languagexml
...
 <profiles>
    ...
  <profile>
  <id>nexus</id>
  ...
  <properties>
        <jiraUser>clinio</jiraUser>
        <jiraPassword>minha_senha_no_jira</jiraPassword>
   </properties>
 ...
 </profiles>
...

 

Ao final deste documento, você está apto a fazer um checkout e compilar "do zero" um módulo JavaUtils!

Anexos

Arquivo settings.xml mínimo para referência

Code Block
themeConfluence
languagexml
   <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository/>
      <interactiveMode/>
      <usePluginRegistry/>
      <offline/>
      <pluginGroups/>
      <servers/>
      <mirrors/>
      <proxies/>
      <profiles/>
      <activeProfiles/>
    </settings>

Exemplo de arquivo settings.xml

Code Block
themeConfluence
languagexml
<?xml version="1.0"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <servers>
    <server>
      <id>subversion</id>
      <username>clinio</username>
      <password>{cdcdcdcdcdcdcdcdcdcdcdccdcdcdcdcdc}</password>
    </server>
    <server>
      <id>tecgraf-snapshots</id>
      <username>clinio</username>
      <password>{dsfsdfnsadjfnasjdfnjasdnfjsdnfjasdnfasjnfsakfns}</password>
    </server>
    <server>
      <id>tecgraf-releases</id>
      <username>clinio</username>
      <password>{jkfsadafnasdjfnasdkffsdafasdfsafsd}</password>
    </server>
    <server>
      <id>tecgraf-site</id>
      <username>clinio</username>
      <password>{dasdasasdasdsdaasdasdfasdfsadfsadfsadfasdf}</password>
    </server>
  </servers>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://nexus.tecgraf.puc-rio.br:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <properties>
        <jiraUser>clinio</jiraUser>
        <jiraPassowrd>senha_do_clinio_no_jira</jiraPassowrd>
      </properties>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>