English | ํ๊ตญ์ด
Ktargeter๋ properties์ ์ํ annotation use-site targets๋ฅผ ์ฌ์ ์ํ ์ ์๋ Kotlin ์ปดํ์ผ๋ฌ ํ๋ฌ๊ทธ์ธ์
๋๋ค.
Kotlin ์ฝ๋์์ Java annotation๋ค์ ์ฌ์ฉํ๋ ค๋ฉด ์ข
์ข
use-site targets์ ์ง์ ํด์ผ ํ๋๋ฐ,
์ด๋ ๋ถํธํ ๋ฟ๋ง ์๋๋ผ target์ด ์ง์ ๋์ง ์์์ ๋ ๋ฐํ์ ๋ฒ๊ทธ๋ก ์ด์ด์ง๋๋ค.
Ktargeter๋ ์ฌ๋ฌ๋ถ์ด @get:Email, @field:Email, ๋๋ @set:Email์ ๋ชจ๋ ๊ธฐ์ตํ๋ ๋์ ์,
Gradle์์ ๋จ ํ ๋ฒ๋ง ๊ตฌ์ฑํ๋ฉด ์ฝ๋ ์ ์ฒด์์ @Email์ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
Ktargeter๋ ์ปดํ์ผ ์ค์ ์๋ํ๋ฉฐ, ๋ฐํ์ ์ค์ ์ถ๊ฐ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํค์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๋ฌ๋ถ์ ์ด ์ฝ๋๋ฅผ:
data class User(
@get:One
val firstName: String,
@field:Two
val lastName: String,
@set:Three
var birthday: LocalDate,
)์ด๋ ๊ฒ ๊ณ ์น ์ ์๊ฒ ์ฃ :
data class User(
@One
val firstName: String,
@Two
val lastName: String,
@Three
var birthday: LocalDate,
)Kotlin 1.5 ํน์ ์ดํ ๋ฒ์ (๋๋ Kotlin 1.4 with JVM IR backend enabled).
ktargeter๋ฅผ build.gradle์ plugins๋ถ๋ถ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ:
plugins {
id 'org.ktargeter' version '0.3.0'
}์ target์ annotation์ ์ ์ํ๋ ๋ฐฉ๋ฒ:
ktargeter.annotations = [
"com.sample.annotations.One" : "get",
"com.sample.annotations.Two" : "field",
"com.sample.annotations.Three": "set"
]์ง์ ๋ annotation๋ค์ properties์ ์ฌ์ฉํ ๋, ์ด annotation์ ๋ํ use-site targets์ ์ฌ์ ์ํ๋ ํ๋ฌ๊ทธ์ธ์ ๋๋ค.
Ktargeter๋ target์ ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ annotations์ target๋ค์ ์ฌ์ ์ํ์ง ์์ต๋๋ค.
Pick a plugin version depending on the Kotlin version used in your project.
| Kotlin version | Ktargeter version |
| Kotlin 1.6 or newer | Ktargeter 0.3.0 |
| Kotlin 1.5 | Ktargeter 0.2.1 |
| Kotlin 1.4 | Ktargeter 0.1.0 |
๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๊ฑฐ๋, Ktargeter๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ๋ฉด ์ธ์ ๋ ์ง issue๋ฅผ ํตํด ๊ธฐ์ฌํด์ฃผ์ธ์. ๋๋ Pull Request๋ฅผ ํตํด ๋ณ๊ฒฝ์ฌํญ์ ์ ์ํ ์ ์์ต๋๋ค.
Ktargeter๋ฅผ ๋๋ฒ๊ทธ ๋๋ ๊ฐ๋ฐํ๋ค๋ฉด ๋ค์์ ๋ฐฉ๋ฒ์ ์ด์ฉํด์ฃผ์ธ์:
- Gradle ๋ฐ Kotlin ํ๋ฌ๊ทธ์ธ์ ๋ก์ปฌ Maven ์ ์ฅ์์ ์ค์นํฉ๋๋ค.:
./gradlew publishToMavenLocal -x signMavenPublication \
-x signPluginMavenPublication -x signSimplePluginPluginMarkerMavenPublication-
ํ๋ก์ ํธ๋ฅผ IntelliJ IDEA('Debug Kotlin Plugin' ํ๊ฒฝ)์์ Importํฉ๋๋ค.
- Run/Debug Configuration ์ฐฝ์์ ์ฌ์ฉ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
-
'compiler-plugin' ๋ชจ๋์ ํด๋์ค์ ์ค๋จ์ ์ ์ถ๊ฐํฉ๋๋ค.
-
๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ณต์ ๋ฐ ๋น๋ํฉ๋๋ค. (์ํ ํ๋ก์ ํธ):
./gradlew clean build --no-daemon -Dorg.gradle.debug=true \
-Dkotlin.compiler.execution.strategy="in-process" \
-Dkotlin.daemon.jvm.options="-Xdebug,-Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n"Debug Kotlin Plugin๊ตฌ์ฑ์ ๋๋ฒ๊น ๋ชจ๋์์ ์คํํฉ๋๋ค..