-
Notifications
You must be signed in to change notification settings - Fork 0
environment
- Requisitos
- Localizações
- Git
- Gradle
- IntelliJ
- Organização de pastas e ficheiros
- Pasta raiz
- Pasta "src/"
- Pasta "build/"
- Pasta "vendor/"
- JDK 8
- JUnit 4.8 (ou mais recente)
- Também disponível nas pastas de trabalho em
<repo>/vendor/test/junit-4.8.1.jar
- IntelliJ IDEA
- Licença para uso académico disponível a pedido
-
GitExtensions
- Instalar a versão "...SetupComplete..."
- Esta ferramenta também instala o Git e KDiff3
- Wiki global à unidade curricular: https://github.com/isel-leic-ls/1819-1-common/wiki
- Repositório Git global à unidade curricular: https://github.com/isel-leic-ls/1819-1-common
Os sistemas de controlo de versões, tal como o Git, têm por objectivo:
- Servir de ponto de armazenamento para os ficheiros produzidos em múltiplos computadores.
- Manter o historial de criação, alteração e remoção destes ficheiros.
Adicionalmente, os sistemas de controlo de versão distribuídos, tais como o Git têm como vantagem adicional:
- Suportar diferentes pontos de armazenamento
- Não existir um ponto único de falha
- Funcionar sem rede
As vantagens da utilização destes sistemas são:
- Simplificar a realização de projectos por múltiplos programadores, por exemplo garantido que a versão dos ficheiros utilizada é a mais actual.
- Manter todo o historial da evolução do projecto.
- Criar e gerir ramos de desenvolvimento paralelo.
Os conceitos fundamentais do Git são:
- Os repositórios - pontos onde são armazenados os ficheiros e o seu historial. Estes repositórios são geridos pelo Git e estão tipicamente associados a um URL.
- O repositório local, na máquina do utilizador, e o(s) repositório(s) remoto(s) para partilha de ficheiros entre utilizadores
- As cópias locais de ficheiros, localizadas no computadores de desenvolvimento, onde os ficheiros são criados e editados. A gestão destas cópias locais e a comunicação com o repositório é realizada por aplicações designadas de clientes Git.
- O conjunto de comandos para transferência e sincronização de informação entre o repositório e as cópias locais.
Os comandos fundamentais do Git são:
-
clone
- criação dum repositório local a partir de repositório remoto. Nesta operação é necessário indicar o URL do repositório remoto e a localização, no sistema de ficheiros local, onde é colocado o repositório local. Note que o repositório local é completamente funcional para execução de comandos Git. -
add
- Adiciona ficheiros editados a índice . -
commit
- actualização do repositório local com a informação que está no índice. -
push
- actualiza um repositório remoto com o estado do repositório local. -
pull
- actualiza o repositório local com o estado do repositório remoto.
Aconselha-se a leitura do livro Pro Git, nomeadamente os dois primeiros capítulos.
O Gradle é uma ferramenta para a automatização dos processos associados à construção de software, tais como: compilação, execução de testes, criação de arquivos ".jar" e a geração de documentação a partir dos ficheiros fonte. Esta ferramenta é constituída por uma biblioteca Java e um script a para execução na linha de comando ("gradlew.bat").
As tarefas automatizadas pelo Gradle são descritas em ficheiros .gradle
, designados de configuration scripts, e tipicamente com o nome "build.gradle".
A utilização do Gradle, ou de ferramentas similares, apresenta as seguintes vantagens:
- Simplificação da realização das tarefas, como a compilação ou a execução dos testes, através da automatização da sua realização. Este aspecto é especialmente importante em tarefas que envolvem a execução de mais do que um comando por uma ordem bem definida.
- Consistência de processos e redução de erros, ao minimizar a intervenção humana na realização da tarefa.
- Integração com ferramentas externas, como por exemplo em cenários de integração contínua.
- Simplificação da geração da aplicação em múltiplos computadores, nomeadamente diferentes daqueles onde é desenvolvida.
- No contexto da unidade curricular de Laboratório de Software, é requisito que o projecto desenvolvido seja completamente construído, instalado e testado através da execução de tasks Gradle.
Propõem-se a utilização duma organização normalizada para os ficheiros e pastas do projecto. A adopção desta organização normalizada reflecte boas práticas no desenvolvimento de projectos software (e.g. Maven) e tem por objectivo:
- Facilitar a compreensão e localização dos ficheiros produzidos, por parte de discentes e docentes.
- Simplificar a automatização de tarefas, como a compilação, geração da documentação ou a produção de arquivos ".jar".
- Permitir a mobilidade das pastas de projecto entre máquinas diferentes.
A pasta raiz apenas contém o ficheiro "build.gradle", com a descrição das tarefas ("tasks") associados à construção do artefactos associados ao projecto. O restante conteúdo do projecto está presente em pastas internas.
A pasta "src/" contém todos os ficheiros com ficheiros "fonte", ou seja, ficheiros criados pela equipa de desenvolvimento. Esta pasta divide-se nas pastas:
- "src/main/" com os ficheiros contendo as funcionalidades implementadas no projecto;
- "src/test/" com os ficheiros para o teste do projecto.
Cada uma destas pastas subdivide-se nas seguintes pastas:
- ".../java" com os ficheiros fonte Java
- ".../sql" com ficheiros contendo scripts SQL
A estrutura interna das pastas ".../java" corresponde à estrutura de "packages" adoptada.
A pasta "build/" contém todos os ficheiros produzidos de forma automática a partir dos ficheiros fonte, nomeadamente: ficheiros ".class" e ".jar" com as classes Java; ficheiros ".html" com a documentação produzida pelo JavaDoc.
A pasta "vendor/" contém ficheiros adicionais, não produzidos pela equipa de desenvolvimento nem gerados a partir destes. São exemplo os ficheiros ".jar" com bibliotecas de classes externas, presentes na pasta interna "vendor/main" e "vendor/lib" (e.g. junit-4.8.1.jar).