Prova de Conceito de uma ferramenta capaz de compilar e instalar dependências automaticamente para criar um fat/uber jar em um projeto em Java.
Para compilar o projeto é necessário usar a própia ferramenta para a compilação
javac build.java
java build build.java
Resulta em um build.jar
que poderá ser adicionado a qualquer projeto. Esse repositório ja inclui um por convêniencia.
É perfeitamente possível utilizar a ferramenta para compilar a si mesmo:
java -jar build.jar build.java
SBJT sempre compila um projeto para um .jar
.
Idealmente projetos que usassem o SJBT teriam esse build.jar
diretamente dentro do projeto. Isso difere de outras ferramentas de
compilação como o gcc
ou npm
que necessitam ser instaladas no sistema do usuário.
SJBT não seria uma ferramenta completa se não fosse capaz de gerenciar dependências. dependências são declaradas dentro do arquivo principal como comentarios
// SJBT: @dependency org.jsoup:jsoup:1.16.1
Links para .zip contendo todas as classes da biblioteca também funcionam, porém SBJT é perfeitamente capaz de utilizar a notação padrão
do maven. SBJT sempre irá incluir todas as dependências no .jar
final (AKA uber jar).
Um exemplo completo:
// SJBT: @dependency org.jsoup:jsoup:1.16.1
import org.jsoup.Jsoup;
class Test {
public static void main(String[] args) {
System.out.println("foo bar foo bar");
try {
var doc = Jsoup.connect("https://example.com").get();
System.out.println(doc.title());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Alem do mais, nenhum arquivo de configuração é necessário.
- É bem capaz que seu LSP não funcione corretamente (a ferramenta do seu editor que te da sugestões de texto).
- Talvez não funcione em projetos onde a estrutura dos arquivos é um pouco complexa.
- Gera uma pasta "build" no seu diretóirio principal.
Tentei usar o maven para um projeto bem simples e não gostei do que vi.