Gradle

  • Создать пустой проект можно с помощью gradle init. Но он создает немного не стандартную структуру нежели я привык.
  • Добавить wrapper - gradle wrapper.

Простой рабочий конфиг build.gradle

Здесь:

  • Секция application нужна для того чтобы работала команда run.
  • Секция jar нужна для того чтобы в итоговом jar файле сформировался нормальный манифест с указанием на главный класс.
  • Плагин com.github.johnrengelman.shadow обеспечивает сборку проекта в shadowJar.
plugins {
    id 'java'
    id 'application'
    id 'com.github.johnrengelman.shadow' version '8.1.1'
}
 
group 'ru.mak_sim'
version '1.0-SNAPSHOT'
 
repositories {
    mavenCentral()
}
 
application {
    mainClass = 'ru.mak_sim.Hello'
}
 
jar {
    manifest {
        attributes(
                'Main-Class': 'ru.mak_sim.Hello'
        )
    }
}
 
dependencies {
  implementation 'org.apache.logging.log4j:log4j-api:2.20.0'
  implementation 'org.apache.logging.log4j:log4j-core:2.20.0'
}