๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’พ.knwldg

Java Project ๋œฏ์–ด ๊ณ ์น˜๊ธฐ - #2

 

์ง€๋‚œ๋ฒˆ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—ฐ๊ฒฐ์„ ํ•˜๋‚˜๋„ ์•ˆํ•ด์„œ ๋นŒ๋“œ์— ์‹คํŒจํ–ˆ์—ˆ์ฃ .

์˜ค๋Š˜์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  jar ๋นŒ๋“œ๋ฅผ ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๋„์ „ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ผ๋‹จ, ์ง€๊ธˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ JInput์„ gradle dependency์— ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

maven central repository์— ๋‹คํ–‰ํžˆ๋„ JInput์ด ์žˆ๋„ค์š”! ๋กœ์ปฌ์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ•  ํ•„์š˜ ์—†์„ ๊ฒƒ ๊ฐ™์•„์š”

 

Maven Central Repository Search

 

search.maven.org

์ €๊ธธ ๋“ค์–ด๊ฐ€๋ฉด gradle์— ์–ด๋–ป๊ฒŒ ์“ฐ๋ผ๊ณ ๊นŒ์ง€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

๋„ˆ๋ฌด๋‚˜ ์นœ์ ˆํ•œ ๊ฒƒ.....

์ผ๋‹จ ์ € ๋‚ด์šฉ์„ dependencies์— ์ถ”๊ฐ€ํ•˜๋ฉด ์š”๋ ‡๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'application'
}

repositories {
    // Use Maven Central for resolving dependencies.
    mavenCentral()
}

dependencies {
    implementation 'net.java.jinput:jinput:2.0.9'

    // Use JUnit test framework.
    testImplementation 'junit:junit:4.13.2'

    // This dependency is used by the application.
    implementation 'com.google.guava:guava:30.1-jre'
}

application {
    // Define the main class for the application.
    mainClass = 'controller_input_test.ControllerInputTest'
}

๊ทธ ๋‹ค์Œ gradle jar๋ฅผ ํ•˜๋ฉด ๋นŒ๋“œ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘!

 

ํ•˜์ง€๋งŒ ์ด ์นœ๊ตฌ๋Š” exe ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ฐฐํฌํ•˜๋Š”๊ฒŒ ๋ชฉ์ ์ด๊ธฐ ๋•Œ๋ฌธ์—

ํ˜น์‹œ ๊ทธ๋Ÿฐ ์ผ๊นŒ์ง€ ํ•ด์ฃผ๋Š” ์นœ๊ตฌ๊ฐ€ ์žˆ์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ๊ธฐ๋Œ€๋ฅผ ๊ฐ€์ง€๊ณ  ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„ธ์ƒ์—๋Š” ์ฐธ ์ข‹์€ ์‚ฌ๋žŒ๋“ค์ด ๋งŽ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

GitHub - TheBoegl/gradle-launch4j: A gradle-plugin to create windows executables with launch4j

A gradle-plugin to create windows executables with launch4j - GitHub - TheBoegl/gradle-launch4j: A gradle-plugin to create windows executables with launch4j

github.com

launch4j๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด .exe๋กœ ๋งŒ๋“ค์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜๋„ค์š”! ์•ผํ˜ธ!

launch4j {
    outfile = 'ControllerInputTest.exe'
    mainClassName = 'controller_input_test.ControllerInputTest'
    bundledJrePath = "${projectDir}/../jre"
    bundledJre64Bit = 'true'
}

build.gradle ํŒŒ์ผ์— ์œ„ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

JRE๋ฅผ ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๊ณ  ๋นŒ๋“œํ•˜๋ฉด ์‹คํ–‰ํ•  ๋•Œ JRE๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋– ์„œ

ํ”„๋กœ์ ํŠธ ๋‚ด์— jre ํด๋” ์ž์ฒด๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ  ์ด ๊ฒฝ๋กœ๋ฅผ bundledJrePath์— ๋„ฃ์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์š”๋ ‡๊ฒŒ ControllerInputTest.exe ํŒŒ์ผ์ด ์ƒ๊ธฐ๊ณ 

์ด๊ฑธ ์‹คํ–‰ํ•˜๋ฉด!

์ด๋ ‡๊ฒŒ ์ œ๊ฐ€ ๋งŒ๋“ค์–ด๋‘์—ˆ๋˜ GUI ํ”„๋กœ์ ํŠธ๊ฐ€ ๋œน๋‹ˆ๋‹ค!

ํ•˜์ง€๋งŒ.... ์›๋ž˜ ์ด๊ฒŒ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉด

๋งจ ์™ผ์ชฝ์— ํ˜„์žฌ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” controller์˜ ๋ชฉ๋ก์ด ๋ชจ๋‘ ๋– ์•ผํ•˜๋Š”๋ฐ.... ์ด๊ฒŒ ์•ˆ๋œจ๋„ค์š”.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ญ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๋Œ€๋กœ ํฌํ•จํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ...๐Ÿ˜ฅ๐Ÿ˜ฅ

์˜ค๋Š˜์€ ์‹œ๊ฐ„์ด ๋Šฆ์—ˆ์œผ๋‹ˆ ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ํ•ด๋ณด๊ณ  ๋‹ค์Œ์— ๋งˆ์ € ํ•ด๋ด์•ผ๊ฒ ์–ด์š”.

๊ทธ๋ž˜๋„ exe ํŒŒ์ผ๊นŒ์ง€ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๋งŒ๋“ค์—ˆ์œผ๋‹ˆ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค! ์ข€๋งŒ ๋” ํ•˜๋ฉด ์ง„์งœ ๋  ๊ฒƒ ๊ฐ™์•„์š”๐Ÿ˜€

์ €๊ฒŒ ๋˜๋ฉด ์ด์ œ readme๋ž‘ wiki ์ž‘์—…์„ ํ•ด์•ผ๊ฒ ์–ด์š” ~.~ ์‹ ๋‚ฉ๋‹ˆ๋‹ค