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/*.jarE 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 shadowJarO 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.pngVeja documentação oficial que está disponível em https://docs.gradle.org/current/userguide/upgrading_version_8.html
gradle wrapper --gradle-version latest