For the complete documentation index, see llms.txt. This page is also available as Markdown.

Como construir e empacotar uma aplicação Java?

Entenda como compilar e empacotar seu projeto Java em um arquivo JAR hospedado usando Maven ou Gradle.

📌 Por Que Preciso Construir Minha Aplicação Java?

Discloud não compila projetos Java automaticamente.

Você deve: ✔ Compilar seu código em arquivos .class. ✔ Empacotar tudo em um único arquivo .jar (incluindo dependências). ✔ Garantir que o arquivo META-INF/MANIFEST.MF defina corretamente a Main-Class.


🔧 Escolhendo uma Ferramenta de Construção

Ferramenta de Construção
Melhor Para
Arquivos Necessários

Maven

Grandes projetos, aplicativos com muitas dependências

pom.xml

Gradle

Projetos modernos com scripts de construção flexíveis

build.gradle ou build.gradle.kts


📦 Construindo Sua Aplicação Java

Apache Maven é uma ferramenta de automação de construção amplamente usada que gerencia construções de projetos, dependências e documentação usando um Modelo de Objeto de Projeto (POM).​

1

Adicione o Plugin do Compilador Maven**.**

Garanta que seu pom.xml inclua o Plugin do Compilador Maven para especificar a versão do Java para compilação. Isso evita problemas de compatibilidade ao executar o projeto.

pom.xml
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.9.9</version>
  <configuration>
    <source>17</source>
    <target>17</target>
  </configuration>
</plugin>
  • Defina <source> e <target> para a versão do Java necessária para seu projeto.

2

Especifique a Classe Principal**.**

Para tornar sua aplicação executável, você precisa especificar o ponto de entrada (método main). Isso é feito usando o Plugin Maven Shade, que também garante que todas as dependências sejam agrupadas dentro de um único arquivo JAR.

pom.xml
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.4</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
          <configuration>
            <transformers>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <!-- NOTE: Replace this with the correct path to your project's main class -->
                <mainClass>com.project.example.Main</mainClass>
              </transformer>
            </transformers>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
  • Substitua com.project.example.Main pelo nome totalmente qualificado real da sua classe Main.

  • Garanta que a classe Main contenha um método public static void main(String[] args) válido.

3

Construa o Projeto**.**

Execute o seguinte comando para limpar construções antigas e gerar os novos arquivos JAR:

mvn clean package

Após executar mvn package, o Maven criará dois arquivos JAR diferentes dentro do diretório target/:

1

JAR Padrão (JAR Original do Projeto).

📌 Nome do arquivo: original-<artifactId>-<version>.jar 📌 Exemplo: original-com.maven.discordbot-0.0.1-SNAPSHOT.jar 📌 Conteúdo:

  • Apenas o código compilado do seu projeto.

  • NÃO inclui dependências.

2

JAR Gordo (JAR Sombreado com Dependências).

📌 Nome do arquivo: <artifactId>-<version>.jar 📌 Exemplo: com.maven.discordbot-0.0.1-SNAPSHOT.jar 📌 Conteúdo:

  • Seu código de aplicação compilado.

  • Todas as dependências incluídas (JDA, Apache Commons, etc.).

  • Arquivo de manifesto (MANIFEST.MF) com a entrada Main-Class.

Gradle é uma ferramenta flexível de automação de construção que usa uma DSL baseada em Groovy ou Kotlin para definir o processo de construção.​

1

Aplique o Plugin Java.

Garanta que seu build.gradle (Groovy) ou build.gradle.kts (Kotlin) aplique o plugin Java:

build.gradle
plugins {
    id 'java'
    id 'com.gradleup.shadow' version '8.3.6' // Plugin Shadow para Fat JAR
}
build.gradle.kts
plugins {
    java
    id("com.gradleup.shadow") version "8.3.6"
}
2

Especifique a Classe Principal.

Para tornar a aplicação executável, defina o ponto de entrada (método main) dentro do manifesto JAR.

build.gradle
shadowJar {
    archiveClassifier.set('all')
    manifest {
        attributes(
            'Main-Class': 'com.project.Main' // Substitua pela sua classe principal real
        )
    }
}

tasks.build.dependsOn shadowJar // Garantir que o shadowJar seja executado ao compilar
build.gradle.kts
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

tasks.withType<ShadowJar> {
    archiveClassifier.set("all")
    manifest {
        attributes(mapOf("Main-Class" to "com.project.Main")) // Substitua pela sua classe main real
    }
}

tasks.named("build") {
    dependsOn("shadowJar")
}
  • Substitua "com.project.Main" pelo nome totalmente qualificado da sua classe Main.

3

Construa o Projeto.

Para limpar construções antigas e gerar novos arquivos JAR, execute:

gradle clean build
1

JAR Padrão (JAR Regular do Projeto).

📌 Nome do arquivo: <project-name>.jar 📌 Exemplo: discordbot.jar 📌 Conteúdo:

  • Apenas o código compilado do seu projeto.

  • NÃO inclui dependências.

2

JAR Gordo (Uber JAR com Dependências).

📌 Nome do arquivo: <project-name>-all.jar 📌 Exemplo: discordbot-all.jar 📌 Conteúdo:

  • Seu código de aplicação compilado.

  • Todas as dependências incluídas (JDA, Apache Commons, etc.).

  • Arquivo de manifesto (MANIFEST.MF) com a entrada Main-Class.

Recomendação

Renomeie seu arquivo JAR para um nome simples como app.jar para evitar problemas com caracteres especiais.​

Última atualização