Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução ao Maven

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

Introdução ao Maven

Apresentação sobre Maven que fiz na empresa onde trabalho. Espero que ajude :)

Avatar for Tiago Moura Brandão

Tiago Moura Brandão

January 05, 2022

Other Decks in Programming

Transcript

  1. - Para que serve? - Como usar? - Vale a

    pena? - Hoje nesta apresentação
  2. Você precisa: - Baixar dependências - Gerar artefatos para diferentes

    ambientes (dev, homologação, prod ) - Executar testes (por favor!!) - Gerar documentação - Fazer deploy
  3. Insights exemplo/pom.xml @kyriosdata kyriosdata Altera forma de configuração de Snyk

    Latest commit 91131e0 on Aug 28, 2021 History 4 contributors @kyriosdata@dependabot-preview@JustCallMeDev@trete 1081 lines (987 sloc) 43.5 KB <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <properties> <java.version>8</java.version> <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.mainClass> com.github.kyriosdata.exemplo.application.console.ProgramaCalendario </project.mainClass> <tools.dir>${project.basedir}/tools</tools.dir> <antrun.version>3.0.0</antrun.version> <checkstyle.plugin.versao>3.1.2</checkstyle.plugin.versao> <checkstyle.versao>8.45.1</checkstyle.versao> <dependency.check.versao>6.1.5</dependency.check.versao> <dockerfile-maven-plugin.version>1.4.13</dockerfile-maven-plugin.version> <h2.versao>1.4.200</h2.versao> <jacoco.version>0.8.6</jacoco.version> <junit.versao>5.7.2</junit.versao> <log4j2.version>2.14.1</log4j2.version> <maven.compiler.plugin>3.8.1</maven.compiler.plugin> <maven.dependency.plugin>3.1.1</maven.dependency.plugin> <maven.exec.plugin>3.0.0</maven.exec.plugin> <maven.javadoc.plugin>3.2.0</maven.javadoc.plugin> <maven.resources.plugin>3.2.0</maven.resources.plugin> <pitest.version>1.6.4</pitest.version> <pmd.plugin.versao>3.13.0</pmd.plugin.versao> <pmd.versao>6.37.0</pmd.versao> <project.info.reports.version>3.1.1</project.info.reports.version> <snyk.versao>2.0.0</snyk.versao> <sonar.versao>3.7.0.1746</sonar.versao> <spotbugs-maven-plugin>4.2.2</spotbugs-maven-plugin> <spring.boot.versao>2.5.4</spring.boot.versao> <surefire.versao>2.22.2</surefire.versao> <findsecbugs-plugin.version>1.11.0</findsecbugs-plugin.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.4</version> <relativePath /> </parent> <groupId>com.github.kyriosdata</groupId> <artifactId>exemplo</artifactId> <packaging>jar</packaging> <version>1.0.3</version> <name>${project.groupId}:${project.artifactId}</name> <description> Projeto de referência para desenvolvimento em Java. A expectativa é que o presente projeto possa ser empregado como ponto de partida e, a partir dele, ajustes realizados para se adequar às necessidades específicas do projeto em questão. </description>
  4. <modelVersion>4.0.0</modelVersion> <groupId>com.javatpoint.application1</groupId> <artifactId>my-application1</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url>

    <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <scope>test</scope> </dependency> </dependencies> Informações sobre seu artefato
  5. <modelVersion>4.0.0</modelVersion> <groupId>com.javatpoint.application1</groupId> <artifactId>my-application1</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url>

    <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <scope>test</scope> </dependency> </dependencies> Gerenciamento de dependências
  6. Mas de onde ele pega essas libs? - Através do

    repositório central do Maven - Em teoria, tem tudo o que você precisa por lá, mas sempre é possível adicionar outros repositórios
  7. <modelVersion>4.0.0</modelVersion> <groupId>com.javatpoint.application1</groupId> <artifactId>my-application1</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url>

    <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <scope>test</scope> </dependency> </dependencies> Gerenciamento de dependências
  8. O jeito padrão para se pegar uma lib, em teoria

    seria: - dar um Google - entrar no primeiro link - baixar um .jar
  9. O jeito mais raíz: - Acessar o github do projeto

    - Clonar código na tag da versão desejada - Buildar na sua máquina - Utilizar a lib em seu projeto
  10. O jeito mais seguro e nutella: - Acessar o github/site

    do projeto - Baixar o .jar da versão desejada - Utilizar em seu projeto
  11. <profiles> <profile> <id>local</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <resources> <resource> <directory>src/main/resources</directory>

    </resource> <resource> <directory>src/main/config/local</directory> </resource> </resources> </build> </profile> <profile> <id>dev</id> <build> <resources> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/config/dev</directory> </resource> </resources> </build> </profile> </profiles> Configuração de builds para diferentes ambientes através de profiles
  12. Como você compila um projeto java? Isso se não tiver

    um framework como Spring, Spring boot, quarkus
  13. Existem N formas de fazer a mesma coisa O Maven

    unifica essas formas fazendo com que qualquer pessoa possa trabalhar no projeto
  14. Plugins Cada tarefinha do Maven é um plugin e como

    qualquer plugin, nós podemos adicionar novos e criar os nossos