ReyMagos
Тег-бомбастер
- 412
- 7
- 121
Всем добрый день! Делаю annotation processor, который, например, добавлял бы все методы с
build.gradle:
P.S. В идеале код из processor'а должен изменить при компиляции код core'а, но в финальный jar-ник не должен попасть.
@Init
в список во время компиляции, чтобы потом пробежаться по этому списку и все методы вызвать. Или фичи, а-ля lombok. Но не хочу компилировать его и привязывать, как библиотеку. Сделал для него отдельный модуль, чтобы компилировать его раньше остальных. Для этих целей нашёл градловскую альтернативу мавенскому assembly-plugin. Distribuition plugin зовётся. Но документация градла умеет держать тайны. Может кто-то делал такое или сможет объяснить, как это реализовать? Насколько я знаю в minecraft такое тоже есть. Буду очень благодарен!build.gradle:
Java:
plugins {
id "java"
id "distribution"
}
group "com.example"
version "1.0-pre"
repositories {
mavenCentral()
}
sourceSets {
core {
java {
srcDirs("core/java")
}
resources {
srcDirs("core/resources")
}
}
preprocessor {
java {
srcDirs("preprocessor/java")
}
resources {
srcDirs("preprocessor/resources")
}
}
}
distributions {
main {
contents {
from("preprocessor/java") {
// Не знаю правильно ли вообще к модулю обращаюсь.
}
into("lib/") {
//
}
}
}
}
ext.libraries = [
logback: [
"org.slf4j:slf4j-api:1.7.30",
"ch.qos.logback:logback-core:1.2.3",
"ch.qos.logback:logback-classic:1.2.3"
],
lwjgl: [
"org.lwjgl:lwjgl",
"org.lwjgl:lwjgl-glfw",
"org.lwjgl:lwjgl-opengl"
],
lwjglRuntime: [
"org.lwjgl:lwjgl::natives-windows",
"org.lwjgl:lwjgl-glfw::natives-windows",
"org.lwjgl:lwjgl-opengl::natives-windows"
]
]
dependencies {
coreImplementation libraries.logback
coreImplementation platform("org.lwjgl:lwjgl-bom:3.2.3")
coreImplementation libraries.lwjgl
coreRuntimeOnly libraries.lwjglRuntime
}
P.S. В идеале код из processor'а должен изменить при компиляции код core'а, но в финальный jar-ник не должен попасть.