👋 We've unified all of GitHub's product documentation in one place! Check out the content for REST API, GraphQL API, and Developers. Learn more on the GitHub blog.


Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Criar e estar o Java com o Maven

Você pode criar um fluxo de trabalho de integração contínua (CI) no GitHub Actions para criar e testar o seu projeto Java com o Maven.

GitHub Actions está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud e GitHub One. O GitHub Actions não está disponível para repositórios privados de contas que utilizam planos antigos por-repositório. Para obter mais informações, consulte os "produtos do GitHub".

Neste artigo

Você conseguiu encontrar o que estava procurando?

Introdução

Este guia mostra como criar um fluxo de trabalho que realiza a integração contínua (CI) para o seu projeto Java usando a ferramenta de gerenciamento de projeto do software Maven. O fluxo de trabalho que você criar permitirá que você veja quando commits em um pull request gerarão falhas de criação ou de teste em comparação com o seu branch-padrão. Essa abordagem pode ajudar a garantir que seu código seja sempre saudável. Você pode estender seu fluxo de trabalho de CI para memorizar arquivos e fazer o upload de artefatos a partir da execução de um fluxo de trabalho.

Os executores hospedados em GitHub têm uma cache de ferramentas com um software pré-instalado, que inclui kits de desenvolvimento Java (JDKs) e Maven. Para obter uma lista do software e das versões pré-instaladas para JDK e Maven, consulte "Software instalado em executores hospedados em GitHub".

Pré-requisitos

Você deve estar familiarizado com o YAML e a sintaxe do GitHub Actions. Para obter mais informações, consulte:

Recomendamos que você tenha um entendimento básico da estrutura do Java e do Maven. Para obter mais informações, consulte "Guia de introdução ao Maven" na documentação do Maven.

Introdução com um modelo de fluxo de trabalho do Maven

GitHub fornece um modelo de fluxo de trabalho Maven que funcionará para a maioria dos projetos Java baseados no Maven. Para obter mais informações, consulte o modelo do fluxo de trabalho do Maven.

Para começar rapidamente, você pode escolher o modelo do Maven pré-configurado ao criar um novo fluxo de trabalho. Para obter mais informações, consulte "Iniciando com modelos de fluxo de trabalho pré-configurados".

Você também pode adicionar este fluxo de trabalho manualmente, criando um novo arquivo no diretório .github/workflows do seu repositório.

nome: Java CI

em: [push]

trabalhos:
  criar:
    runs-on: ubuntu-latest

    etapas:
      - usa: actions/checkout@v2
      - nome: Set up JDK 1.8
        usa: actions/setup-java@v1
        com:
          java-version: 1.8
      - nome: Criado com Maven
        executar: mvn -B package --file pom.xml

Este fluxo de trabalho realiza as etapas a seguir:

  1. O checkout faz o download de uma cópia do seu repositório no executor.
  2. A etapa setup-java configura o Java 1.8 JDK.
  3. A etapa "Construir com Maven" executa o pacote-alvo Maven alvo de modo não interativo para garantir que seu código de seja criado, o seu teste seja aprovado e que seja possível criar um pacote.

Os modelos-padrão do fluxo de trabalho são excelentes pontos de partida ao criar seu fluxo de trabalho de compilação e teste, e você pode personalizar o modelo para atender às necessidades do seu projeto.

Running on a different operating system

The starter workflow template configures jobs to run on Linux, using the GitHub-hosted ubuntu-latest runners. You can change the runs-on key to run your jobs on a different operating system. For example, you can use the GitHub-hosted Windows runners.

runs-on: windows-latest

Or, you can run on the GitHub-hosted macOS runners.

runs-on: macos-latest

You can also run jobs in Docker containers, or you can provide a self-hosted runner that runs on your own infrastructure. For more information, see "Workflow syntax for GitHub Actions."

Specifying the JVM version and architecture

The starter workflow template sets up the PATH to contain OpenJDK 8 for the x64 platform. If you want to use a different version of Java, or target a different architecture (x64 or x86), you can use the setup-java action to choose a different Java runtime environment.

For example, to use version 9.0.4 of the JDK for the x64 platform, you can use the setup-java action and configure the java-version and architecture parameters to '9.0.4' and x64.

steps:
  - uses: actions/checkout@v2
  - name: Set up JDK 9.0.4 for x64
    uses: actions/setup-java@v1
    with:
      java-version: '9.0.4'
      architecture: x64

For more information, see the setup-java action.

Criar e testar seu código

Você pode usar os mesmos comandos usados localmente para criar e testar seu código.

O fluxo de trabalho inicial executará o pacote-alvo por padrão. Na configuração-padrão do Maven, este comando fará o download das dependências, criará classes, executará testes e classes de pacotes em seu formato distribuível, como, por exemplo, um arquivo JAR.

Se você usa comandos diferentes para criar seu projeto ou se desejar usar um alvo diferente, você poderá especificá-los. Por exemplo, você pode desejar executar o alvo de verificar, configurado em um arquivo pom-ci.xml.

etapas:
  - usa: actions/checkout@v2
  - usa: actions/setup-java@v1
    com:
      java-version: 1.8
  - nome: Executar a fase de verificação do Maven
    executar: mvn -B verify --file pom-ci.xml

Memorizar dependências

Você pode armazenar as suas dependências para acelerar as execuções do seu fluxo de trabalho. Após a conclusão bem-sucedida, o seu repositório local do Maven será armazenado na infraestrutura do GitHub Actions. Para os fluxos de trabalho futuros, a cache será restaurada para que as dependências não precisem ser baixadas dos repositórios remotos do Maven. Para obter mais informações, consulte "Memorizando dependências para acelerar os fluxos de trabalho" e a ação cache.

etapas:
  - usa: actions/checkout@v2
  - nome: Set up JDK 1.8
    usa: actions/setup-java@v1
    cpm:
      java-version: 1.8
  - nome: Cache Maven packages
    usa: actions/cache@v2
    com:
      caminho: ~/.m2
      chave: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
      restore-keys: ${{ runner.os }}-m2
  - nome: Construir com Maven
    executar: mvn -B package --file pom.xml

Este fluxo de trabalho salvará o conteúdo do repositório local do Maven, localizado no diretório .m2 do diretório inicial do executor. A chave da cache será o conteúdo em hash do pom.xml. Portanto, as alterações em pom.xml invalidarão a cache.

Empacotar dados do fluxo de trabalho como artefatos

Após a sua criação ter sido criada com sucesso e os seus testes aprovados, é possível que você deseje fazer o upload dos Java resultantes como um artefato de criação. Isso armazenará os pacotes criados como parte da execução do fluxo de trabalho e permitirá que você faça o download desses pacotes. Os artefatos podem ajudá-lo a testar e depurar os pull requests no seu ambiente local antes de serem mesclados. Para obter mais informações, consulte "Dados recorrentes do fluxo de trabalho que usam artefatos".

De modo geral, o Maven criará arquivos de saída como JARs, EARs ou WARs no diretório alvo. Para fazer o upload como artefatos, você pode copiá-los em um novo diretório que contém artefatos a serem subidos. Por exemplo, você pode criar um diretório denominado treinamento. Em seguida, você pode fazer o upload do conteúdo desse diretório usando a ação upload-artifact.

etapas:
  - usa: actions/checkout@v2
  - usa: actions/setup-java@v1
  - executar: mvn -B package --file pom.xml
  - executar: mkdir staging && cp target/*.jar staging
  - executar: actions/upload-artifact@v1
    executar:
      nome: Pacote
      caminho: treinamento

Você conseguiu encontrar o que estava procurando?

Pergunte a uma pessoa

Não consegue encontrar o que procura?

Entrar em contato