Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Usar o <version> na dependency ou não

Bom dia a todos

Eu vi que o professor não estava colocando a versão das dependências no pom.xml, como nesse caso:

        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>

Enquanto no site do Maven Repository é adicionado a versão do software:

        <!-- https://mvnrepository.com/artifact/org.flywaydb/flyway-core -->
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
            <version>9.16.1</version>
        </dependency>

A minha dúvida é:

  • quando não se coloca a versão, o maven instala a versão mais recente do software?
  • quando se faz um projeto, é melhor definir a versão da dependência para ter uma estabilidade no projeto (ex: não sei porque, mas quando eu uso o Junit no kotlin, se utilizar uma versão acima do 5.7.0 (hoje estamos no 5.9.2), o Junit não lê as classes Kotlin e dá erro), ou deixa sem ter a versão para atualizar automaticamente?
2 respostas

Oi Murillo!

Na verdade a versão não é definida pois o Spring Boot vai utilizar a versão que ele já tem configurado para as dependências.

No pom.xml do projeto tem a tag parent, que herda do pom.xml do spring boot e lá já tem definidas as versões de cada uma das dependências. Ou seja, a versão então das dependeências será de acordo com a versão do Spring Boot sendo utilizada no projeto.

Bons estudos!

solução!

Por exemplo, esse é o pom.xml do spring boot na versão 3.0.5:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>3.0.5</version>
  </parent>
  <artifactId>spring-boot-starter-parent</artifactId>
  <packaging>pom</packaging>
  <name>spring-boot-starter-parent</name>
  <description>Parent pom providing dependency and plugin management for applications built with Maven</description>
  <properties>
    <java.version>17</java.version>
    <resource.delimiter>@</resource.delimiter>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  <url>https://spring.io/projects/spring-boot</url>

 //...

Tem mais código que omiti, pq é gigante esse pom.xml :D Mas se você reparar, esse pom.xml também herda de outro pom.xml:

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>3.0.5</version>
  </parent>

E aqui está esse outro pom.xml, que é quem define as versões das bibliotecas:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>3.0.5</version>
  <packaging>pom</packaging>
  <name>spring-boot-dependencies</name>
  <description>Spring Boot Dependencies</description>
  <url>https://spring.io/projects/spring-boot</url>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0</url>
    </license>
  </licenses>
  <developers>
    <developer>
      <name>Spring</name>
      <email>ask@spring.io</email>
      <organization>VMware, Inc.</organization>
      <organizationUrl>https://www.spring.io</organizationUrl>
    </developer>
  </developers>
  <scm>
    <url>https://github.com/spring-projects/spring-boot</url>
  </scm>
  <properties>
    <angus-mail.version>1.0.0</angus-mail.version>
    <artemis.version>2.26.0</artemis.version>
    <aspectj.version>1.9.19</aspectj.version>
    <assertj.version>3.23.1</assertj.version>
    <awaitility.version>4.2.0</awaitility.version>
    <brave.version>5.14.1</brave.version>
    <build-helper-maven-plugin.version>3.3.0</build-helper-maven-plugin.version>
    <byte-buddy.version>1.12.23</byte-buddy.version>
    <cache2k.version>2.6.1.Final</cache2k.version>
    <caffeine.version>3.1.5</caffeine.version>
    <cassandra-driver.version>4.15.0</cassandra-driver.version>
    <classmate.version>1.5.1</classmate.version>
    <commons-codec.version>1.15</commons-codec.version>
    <commons-dbcp2.version>2.9.0</commons-dbcp2.version>
    <commons-lang3.version>3.12.0</commons-lang3.version>
    <commons-pool.version>1.6</commons-pool.version>
    <commons-pool2.version>2.11.1</commons-pool2.version>
    <couchbase-client.version>3.4.4</couchbase-client.version>
    <db2-jdbc.version>11.5.8.0</db2-jdbc.version>
    <dependency-management-plugin.version>1.1.0</dependency-management-plugin.version>
    <derby.version>10.16.1.1</derby.version>
    <dropwizard-metrics.version>4.2.18</dropwizard-metrics.version>
    <ehcache3.version>3.10.8</ehcache3.version>
    <elasticsearch-client.version>8.5.3</elasticsearch-client.version>
    <flyway.version>9.5.1</flyway.version>
    <freemarker.version>2.3.32</freemarker.version>
    <git-commit-id-plugin.version>5.0.0</git-commit-id-plugin.version>
    <glassfish-jaxb.version>4.0.2</glassfish-jaxb.version>
    <glassfish-jstl.version>3.0.1</glassfish-jstl.version>
    <graphql-java.version>19.4</graphql-java.version>
    <groovy.version>4.0.10</groovy.version>
    <gson.version>2.9.1</gson.version>
    <h2.version>2.1.214</h2.version>
    <hamcrest.version>2.2</hamcrest.version>
    <hazelcast.version>5.1.5</hazelcast.version>
    <hibernate.version>6.1.7.Final</hibernate.version>
    <hibernate-validator.version>8.0.0.Final</hibernate-validator.version>
    <hikaricp.version>5.0.1</hikaricp.version>
    <hsqldb.version>2.7.1</hsqldb.version>
    <htmlunit.version>2.65.1</htmlunit.version>

   ... resto omitido.