Questão nº 44
Questão de Tecnologia da Informação · FCC TRT24 2016 (nº 44)
Considere que um Analista está utilizando a ferramenta Maven e precisa definir que seu projeto depende de algumas outras ferramentas. Esta definição é feita inteiramente no POM, usando a tag `<dependencies>`, dentro da qual cada dependência é definida. Considere o trecho de código abaixo.
`<dependency>`
I
`</dependency>`
Em condições ideais, para que seja definido que o projeto depende do JUnit 4.12 e que o Maven adicione a dependência do JUnit apenas no momento em que os testes forem executados, garantindo que a dependência não seja adicionada no artefato que será gerado, a caixa I deve ser corretamente preenchida com
- A`<groupId>junit</groupId>`
`<version>4.12</version>`
`<test>compile</test>` - B`<groupId>junit</groupId>`
`<artifactId>junit 4.12</artifactId>`
`<compile>test</compile>` - C`<groupId>junit</groupId>`
`<artifactId>junit</artifactId>`
`<version>4.12</version>`
`<scope>test</scope>` (alternativa correta) - D`<groupId>junit</groupId>`
`<version>4.12</version>`
`<exclusion>system</exclusion>` - E`<groupId>junit 4.12</groupId>`
`<artifactId>junit</artifactId>`
`<system>test</system>`
`<scope>system</scope>`
Resposta comentada
Gabarito Alternativa C
Em Maven, cada dependência é identificada por seu groupId (grupo), artifactId (nome do artefato) e version (versão), e o scope (escopo) define quando essa dependência é necessária no ciclo de vida do projeto.
- (A) Incorreta: Faltam o
artifactIde a tag<test>não existe para definir escopo;compilenão é um valor válido para uma tag<test>. - (B) Incorreta: O
artifactIdestá incorreto (inclui a versão) e a tag<compile>não existe para definir escopo;testnão é um valor válido para uma tag<compile>. Armadilha: A banca tenta confundir o aluno misturando o nome do escopo (test) com o nome de uma fase de compilação (compile) e colocando a versão noartifactId, que é um erro comum de iniciantes. - (C) Correta: O
groupId(junit),artifactId(junit) eversion(4.12) estão corretos para o JUnit 4.12. Oscopetestgarante que a dependência seja usada apenas durante a fase de testes e não seja incluída no artefato final gerado. - (D) Incorreta: Falta o
artifactId. A tag<exclusion>é usada para excluir dependências transitivas, não para definir o escopo da dependência atual.systemé um tipo de escopo, mas não é usado dentro de<exclusion>dessa forma. - (E) Incorreta: O
groupIdestá incorreto (inclui a versão). A tag<system>não existe para definir escopo ou qualquer propriedade da dependência. Oscopesystemé usado para dependências que estão no sistema de arquivos local, não para bibliotecas gerenciadas pelo Maven como o JUnit.
Fonte: FCC TRT24 2016 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.