Criando libs no Gradle com Android – Parte 2

Posted by rlecheta on janeiro 15, 2015
Android, Tutorial

Na primeira parte do tutorial vimos como criar uma lib e fazer o deploy em uma pasta local do computador.

Mas provavelmente você precisa compartilhar suas libs com todo o seu time, portanto podemos instalar um servidor de repositório, que é o Nexus Sonatype.

Faça o download do Nexus Sonatype aqui.

Este é um servidor de Maven que atua como repositório de projetos. O legal é que ele possui o servidor web Jetty embutido, então basta um comando para subir o servidor do Sonatype.

1) Instalando o servidor Nexus

Download aqui.

Ao descompactar o Nexus você verá a seguinte pasta. No meu caso estou testando no Ubuntu.

Screenshot from 2015-01-15 09:36:09

Entre dentro da pasta do nexus até a pasta bin, e digite o seguinte comando para iniciar o servidor.

./nexus start

Screenshot from 2015-01-15 09:38:21

Por padrão o Nexus vai executar na pasta 8081, faça o teste: http://localhost:8081/nexus/

Screenshot from 2015-01-15 09:39:25

Ao clicar nos repositórios você verá a seguinte página. Para entender a estrutura de repositórios do Nexus veja a documentação oficial se precisar.

Screenshot from 2015-01-15 09:39:59

2) Fazendo deploy da lib no Nexus

Na parte 1 do tutorial fizemos o deploy em uma pasta local com a seguinte configuração.

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file:///home/ricardo/gradle/rep")

            pom.groupId = GROUP
            pom.artifactId = POM_ARTIFACT_ID
            pom.version = VERSION_NAME
        }
    }
}

Então basta substituir a URL do repositório para a URL do Nexus.

http://localhost:8081/nexus/content/repositories/releases/

O resultado fica assim:

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://localhost:8081/nexus/content/repositories/releases/"){
                authentication(userName: "admin", password: "admin123")
            }

            pom.groupId = GROUP
            pom.artifactId = POM_ARTIFACT_ID
            pom.version = VERSION_NAME
        }
    }
}
task install(dependsOn: uploadArchives)

Por padrão o usuário do Nexus é “admin”, senha “admin123”.

 

Feito isso execute a task install conforme fizemos na parte 1 do tutorial.
Screenshot from 2015-01-15 10:15:33
O resultado podemos ver no console do Android Studio. Eu acabei de fazer o deploy da versão 0.0.3 da lib de teste.

Screenshot from 2015-01-15 10:21:31

Depois de ter feito o deploy, abra o browser e veja o conteúdo do repositório. Você verá a pasta com o nome do pacote da sua lib.

http://localhost:8081/nexus/content/repositories/releases/

Screenshot from 2015-01-15 10:21:43

Então basta navegar dentro das pastas até chegar na lib.

Screenshot from 2015-01-15 10:21:58

3) Utilizando a lib em outro projeto

Na parte 1 do tutorial, o projeto que deseja utilizar a lib configurou o repositório para buscar a dependência assim:

repositories {
    maven {
        url "file:///home/ricardo/gradle/rep"
    }
}

Então basta alterar para buscar da URL do Nexus e pronto.

repositories {
    maven {
        url "http://localhost:8081/nexus/content/repositories/releases/"
    }
}

Aqui na Livetouch temos um servidor privado que somente os developers tem acesso, e o Nexus Sonatype ajuda muito neste controle.

Bom, é claro que no projeto você precisa declarar a dependência para a lib, então não esqueça.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'

    compile 'br.com.livroandroid:mylib:0.0.3'
}

8 Comments to Criando libs no Gradle com Android – Parte 2