-
Notifications
You must be signed in to change notification settings - Fork 0
work environment
- JDK 8
- IntelliJ IDEA Community Edition
-
Git
- Interface gráfica recomendada para Windows - GitExtensions
- Instalar a versão "...SetupComplete..."
- Esta ferramenta também instala o Git e KDiff3
- Interface gráfica recomendada para Windows - GitExtensions
- Wiki global à unidade curricular: https://github.com/isel-leic-ls/1920-2-common/wiki
- Repositório Git global à unidade curricular: https://github.com/isel-leic-ls/1920-2-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.
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 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/test" (e.g. junit-4.8.1.jar).