O principal objetivo desse repositório consiste em demonstrar como gerar uma aplicação Java empacotada, com todas as bibliotecas que depende, em um único arquivo .jar
por meio do Gradle Shadow plugin.
Foi feito uso do Gradle Shadow plugin para empacotar toda a aplicação Java, junto com suas dependências, dentro de um arquivo .jar
.
No arquivo build.gradle
é necessário incluir o Gradle Shadow plugin na seção plugins
. O plugin application exige que indique qual classe Java que contém um método main
será a classe a ser invocada pela máquina virtual Java. Assim, no trecho abaixo isso foi feito na seção application
.
plugins {
id 'application'
// Gradle Shadow plugin
id 'com.github.johnrengelman.shadow' version '8.1.1'
}
application{
// informar o nome do pacote e classe Java que tem o método main
mainClass = 'poo.Principal'
}
Nesse projeto foi criado um diretório libs
para armazenar o arquivo .jar
da biblioteca barcode.
Foi necessário modificar o arquivo .gitignore
de forma a garantir que os arquivos .jar
dentro do diretório libs
não sejam ignorados. Sendo assim, foi incluída a linha abaixo no final do arquivo .gitignore
.
!**/libs/*.jar
E no arquivo build.gradle
foi incluída uma linha na seção de dependências.
dependencies {
// importando arquivo JAR que está dentro do diretório lib
implementation files('libs/barcode.jar')
}
Para gerar QRCode foi feito uso das bibliotecas Google ZXing Core e Google ZXing Java SE Extensions, as quais estão disponíveis no repositório MVN Repository.
As respectivas linhas foram incluídas no arquivo build.gradle
.
dependencies {
implementation 'com.google.zxing:core:3.5.3'
implementation 'com.google.zxing:javase:3.5.3'
}
./gradlew run --args "barcode 12345 codigo.png"
Será gerado um arquivo como o nome codigo.png
dentro do diretório app.
Para empacotar a aplicação, bem como suas dependências, dentro de um arquivo . jar
executável, faça uso da tarefa shadowJar
.
./gradlew shadowJar
O arquivo app-all.jar
será gerado dentro do diretório app/build/libs
.
Essa aplicação exemplo gera códigos de barra e QRCode em arquivos .png
. A aplicação, quando empacotada em um arquivo .jar
executável, poderá ser executada no terminal da seguinte maneira:
java -jar app-all.jar barcode 123456 imagem.png
# ou
java -jar app-all.jar qrcode 'https://www.sj.ifsc.edu.br' imagem.png
Veja documentação oficial que está disponível em https://docs.gradle.org/current/userguide/upgrading_version_8.html
gradle wrapper --gradle-version latest