devkobe24.com
AWS
Algorithm
2024
Architecture
Archive
AWS_archive
CPP_DS
CS_archive
DataStructure
Database
HackTheSwift
Java_archive
Leet-Code
MySQL
Network_archive
OS
Post
Read English Book
SQL_archive
Spring & Spring Boots
TIL
Web
CS
2024
Code Review
DB
Data Structure
Development tools and environments
Interview
Java
Java多識
Java
Network
2024
Others
SQL
2024
Server
Spring
Troubleshooting
Home
Contact
Copyright © 2024 |
Yankos
Home
> Development tools and environments
Now Loading ...
Development tools and environments
🛠️[개발 도구 및 환경] `org.springframework.boot` 플러그인의 역할?
🛠️[개발 도구 및 환경] org.springframework.boot 플러그인의 역할? Spring Boot 플러그인(org.springframework.boot)은 Spring Boot 기반 프로젝트를 효율적으로 빌드하고 실행할 수 있도록 돕는 도구입니다. Gradle 또는 Maven과 같은 빌드 도구에서 사용되며, 다양한 작업을 자동화하여 개발 생산성을 높입니다. 1️⃣ 주요 역할. 1️⃣ Spring Boot 애플리케이션 실행 지원. Spring Boot 애플리케이션을 직접 실행할 수 있는 bootRun(Gradle) 또는 spring-boot:run(Maven) 작업을 제공합니다. 애플리케이션 실행에 필요한 클래스패스 설정 및 시작 클래스를 자동으로 감지합니다. 실행 명령 예: ./gradlew bootRun mvn spring-boot:run 2️⃣ 애플리케이션 패키징. Spring Boot 애플리케이션을 실행 가능한 JAR 또는 WAR 파일로 패키징합니다. 패키징된 파일에는 필요한 모든 의존성과 내장 웹 서버(예: Tomcat, Jetty)가 포함됩니다. 이를 통해 추가 설정 없이 독립 실행형 애플리케이션으로 배포가 가능합니다. Gradle: ./gradlew bootJar ./gradlew bootWar Maven: mvn package 3️⃣ 의존성 관리. Spring Boot의 의존성 관리 기능을 제공합니다. spring-boot-dependencies BOM(Bill of Materials)을 통해 프로젝트에서 사용해야 할 의존성 버전을 자동으로 관리합니다. 이를 통해 호환성 문제를 최소화하고, 안정적인 의존성 구성을 유지할 수 있습니다. 4️⃣ 내장 웹 서버 통합. 내장된 Tomcat, Jetty, Undertow와 같은 웹 서버를 활용하여 웹 애플리케이션을 실행할 수 있도록 설정합니다. 개발 중에는 bootRun 명령으로 내장 서버를 쉽게 실행하고 테스트할 수 있습니다. 5️⃣ 설정 및 환경 관리. Spring Boot의 application.properties 또는 application.yml과 같은 설정 파일을 읽고 실행 시 적용합니다. 프로파일(Profiles)을 통해 다양한 실행 환경(dev, test, prod)을 쉽게 구성할 수 있습니다. 6️⃣ 개발 및 디버깅 지원. 애플리케이션 코드를 변경하면 자동으로 반영하는 핫 리로드(Hot Reload) 기능을 Spring DevTools와 연계하여 제공합니다. 이를 통해 코드 변경 후 서버를 다시 시작하지 않고도 테스트할 수 있습니다. 7️⃣ 테스트 지원. test 작업을 통해 Spring Boot 테스트를 실행합니다. Gradle/Maven 빌드 도구에 기본 제공되는 테스트 프레임워크(JUnit, TestNG)와 쉽게 통합됩니다. 8️⃣ 추가 작업 제공. Gradle bootBuildeImage : 애플리케이션을 OCI(컨테이너) 이미지로 빌드. Maven spring-boot:build-image : 컨테이너 이미지를 생성. 9️⃣ Spring Boot Gradle 플러그인 예제. build.gradle 설정. plugins { id 'org.springframework.boot' version '3.4.0' // Spring Boot 플러그인 id 'io.spring.dependency-management' version '1.1.3' // 의존성 관리 id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' } 주요 명령어. 애플리케이션 실행: ./gradlew bootRun JAR 생성: ./gradlew bootJar WAR 생성: ./gradlew bootWar 1️⃣0️⃣ Spring Boot Maven 플러그인 예제. pom.xml 설정. <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 주요 명령어. 애플리케이션 실행: mvn spring-boot:run 패키징: mvn package 1️⃣1️⃣ 요약. Spring Boot 플러그인 Spring Boot 프로젝트를 쉽게 실행, 패키징, 의존성 관리할 수 있는 도구입니다. 아 플러그인을 활용하면 개발 속도가 크게 향상되고, 배포 및 관리가 간단해집니다.
Development tools and environments
· 2024-12-11
🛠️[개발 도구 및 환경] Spring Boot에서 Profile을 활용하여 개발 환경 분리하기.
🛠️[개발 도구 및 환경] Spring Boot에서 Profile을 활용하여 개발 환경 분리하기. 1️⃣ 프로파일 분리 방법. 방법 1: application.yml 파일에서 분리. application.yml 파일은 여러 프로파일을 하나의 파일로 관리할 수 있도록 지원합니다. 환경별로 설정을 나누기 위해 --- 구분자를 사용합니다. 예시: application.yml # 기본 설정 (spring.profiles.active를 지정하지 않으면 이 설정이 사용됨) spring: profiles: default: local datasource: url: jdbc:h2:mem:localdb username: local_user password: local_pass --- # 개발 환경(dev) 설정. spring: profiles: dev datasource: url: jdbc:mysql://dev.example.com:3306/devdb username: dev_user password: dev_pass --- # 운영 환경(prod) 설정. spring: profiles: prod datasource: url: jdbc:mysql://prod.example.com:3306/proddb username: prod_user password: prod_pass 방법 2: applicatioon-{profile}.yml 파일로 분리. 각 프로파일을 별도 파일로 관리할 수도 있습니다. 파일 이름에 {profile} 부분을 프로파일 이름으로 지정합니다. 파일 구조 src/main/resources/ ├── application.yml # 기본 설정 파일 ├── application-local.yml # local 프로파일 설정 ├── application-dev.yml # dev 프로파일 설정 ├── application-prod.yml # prod 프로파일 설정 application.yml(공통 성정 및 활성화 프로파일 지정) spring: profile: active: local # 기본 활성화 프로파일 설정 application-local.yml spring: datasource: url: jdbc:h2:mem:localdb username: local_user password: local_pass application-dev.yml spring: datasource: url: jdbc:mysql://dev.example.com:3306/devdb username: dev_user password: dev_pass application-prod.yml spring: datasource: url: jdbc:mysql://prod.example.com:3306/proddb username: prod_user password: prod_pass 2️⃣ 실행 시 프로파일 지정 방법. 방법 1: 명령어 옵션으로 프로파일 지정. java -jar library-app-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev 방법 2: 환경 변수로 프로파일 지정. SPRING_PROFILES_ACTIVE=dev java -jar library-app-0.0.1-SNAPSHOT.jar 방법 3: IDE를 통해 프로파일 지정 server: port: 8080 spring: config: activate: on-profile: local datasource: url: "jdbc:h2:mem:library;MODE=MYSQL;NON_KEYWORDS=USER" username: "sa" password: "" driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: show_sql: true format_sql: true dialect: org.hibernate.dialect.H2Dialect h2: console: enabled: true path: /h2-console --- server: port: 8080 spring: config: activate: on-profile: dev datasource: url: "jdbc:mysql://localhost/library" username: "root" password: "" driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: none properties: hibernate: show_sql: true format_sql: true dialect: org.hibernate.dialect.MySQL8Dialect Run/Debug Configuration 창 열기 Active profiles에 지정할 환경 추가 3️⃣ 코드로 프로파일 확인 및 적용. Spring Boot 애플리케이션 코드에서 현재 활성화된 프로파일을 확인하거나 특정 로직을 환경에 따라 분기할 수도 있습니다. 활성 프로파일 확인. import org.springframework.core.env.Enviroment; import org.springframework.stereotype.Component; @Component public class ProfileChecker { private final Environment environment; public ProfileChecker(Environment environment) { this.environment = this.environment; } public void printActiveProfiles() { String[] activeProfiles = environment.getActiveProfiles(); System.out.println("Active Profiles: " + String.join(", ", activeProfiles)); } } 특정 프로파일에서만 동작하는 코드. import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; @Service @Profile("dev") // dev 환경에서만 활성화 public class DevOnlyService { public void run() { System.out.println("This service runs only in the dev environment!"); } } 4️⃣ 주의사항. 1️⃣ 환경 변수 우선 순위. Spring Boot는 프로파일 설정에서 아래 순서로 우선순위를 따릅니다. 명령줄 인수 SPRING_PROFILES_ACTIVE 환경 변수 appilcation.yml 또는 applicatioon.properties의 spring.profiles.active 값 2️⃣ 운영 환경에 대한 보안 운영 환경에서는 application-prod.yml 같은 파일에 민감한 정보를 포함하지 않고 외부 설정 파일이나 환경 변수를 활용하는 것이 좋습니다. 3️⃣ 프로파일에 따른 빈(Bean) 생성 관리. 특정 프로파일에서만 사용해야 하는 빈은 @Profile 애너테이션을 사용해 관리합니다. 5️⃣ 결론. Spring Boot의 프로파일을 통해 개발 환경에 따른 설정을 효과적으로 분리하고 관리할 수 있습니다. application.yml 내에서 분리하거나 별도 파일로 분리하여 설정하며, 실행 시 –spring.profiles.active로 활성화할 프로파일을 지정하면 됩니다. 운영 환경에서는 보안을 고려해 민감 정보를 환경 변수로 관리하는 것이 권장됩니다.
Development tools and environments
· 2024-11-24
🛠️[개발 도구 및 환경] .gitignore가 동작하지 않아요!
🛠️[개발 도구 및 환경] .gitignore가 동작하지 않아요! 1️⃣ .gitignore가 제대로 동작하지 않을 때. .gitignore를 생성한 후 내부에 .DS_Store를 추가하고 나서 언젠가부터 ignore 처리된 파일이 changes에 나오기 시작했습니다. 그래서 그 이유를 찾아보니 “git의 캐시가 문제가 되는 것”이였습니다. 아래의 명령어로 캐시 내용을 전부 삭제후 다시 add All 해서 커밋하니 제대로 동작했습니다. git rm -r --cached . git add . git commit -m "fixed untracked files" 📝 REFERENCE 기억보단 기록을
Development tools and environments
· 2024-11-24
🛠️[개발 도구 및 환경] 빌드된 프로젝트 실행하기.
🛠️[개발 도구 및 환경] 빌드된 프로젝트 실행하기. 1️⃣ plain.jar와 executable.jar. AWS Linux 2023 EC2 내에서 도서 관리 애플리케이션을 빌드하니 새로운 build 파일이 생겨났습니다. /build/libs/ 경로를 따라 들어가면 plain.jar 파일과 executable.jar 파일이 생성되어 있는 것을 확인할 수 있습니다. library-app-0.0.1-SNAPSHOT-plain.jar // <- plain.jar 파일 library-app-0.0.1-SNAPSHOT.jar // <- executable.jar 파일 이 두 가지 파일을 예로 들어 각각의 의미와 차이를 설명해보겠습니다. 2️⃣ library-app-0.0.1-SNAPSHOT-plain.jar 설명 “Plain JAR”로 불리며, 프로젝트의 클래스 파일과 리소스만 포함된 JAR입니다. 의존성 라이브러리나 실행 진입점(main())이 설정되지 않은 단순 JAR 파일입니다. 포함 내용 프로젝트 소스에서 빌드되고 컴파일된 클래스 파일(.class). META-INF 디렉토리와 리소스 파일. 사용 목적 독립 실행이 불가능하며, 다른 프로젝트에서 의존성으로 사용할 때 활용될 수 있습니다. 라이브러리 형태로 배포하거나 특정 작업에 사용됩니다. 3️⃣ library-app-0.0.1-SNAPSHOT.jar 설명 “Executable JAR”로 불리며, 실행 가능한 JAR 파일입니다. 이 파일에는 모든 의존성 라이브러리와 실행 진입점(main() 메서드)을 포함합니다. 포함 내용 library-app-0.0.1-SNAPSHOT-plain.jar의 모든 내용. 의존성 라이브러리들이 포함되어 실행 가능한 환경이 됩니다. META-INF/MANIFEST.MF 파일에 Main-Class가 설정되어 있어, java -jar 명령으로 실행할 수 있습니다. 사용 목적 애플리케이션을 실행하거나 배포할 때 사용됩니다. 독립 실행 가능한 애플리케이션 JAR로 사용됩니다. 4️⃣ 주요 차이점. 구분 plain.jar executable.jar 의존성 포함 여부 포함되지 않음 포함되어 있음 실행 가능 여부 실행 불가능 실행 가능 사용 목적 라이브러리 형태로 사용 독립 실행 가능한 애플리케이션 Manifest 설정 Main-Class 없음 Main-Class 포함 5️⃣ 선택 기준. 실행 가능한 애플리케이션으로 사용하려면 libaray-app-0.0.1-SNAPSHOT.jar를 사용하여 실행. java -jar library-app-0.0.1-SNAPSHOT.jar 라이브러리나 종속 프로젝트로 활용하려면 library-app-0.0.1-SNAPSHOT-plain.jar를 배포하거나 의존성으로 추가.
Development tools and environments
· 2024-11-23
🛠️[개발 도구 및 환경] `./gradlew build -x test` 명령어는 무엇인가요?
🛠️[개발 도구 및 환경] ./gradlew build -x test 명령어는 무엇인가요? ./gradlew build -x test 명령어는 Gradle 빌드 시스템에서 프로젝트를 빌드(Build)하면서 테스트(Test) 단계를 건너뛰기 위한 명령어입니다. 1️⃣ 명령어 구성. 1️⃣ ./gradlew Gradle Wrapper를 실행하는 명령어입니다. 프로젝트 내에 포함된 Gradle Wrapper(gradlew)를 사용하여 Gradle 명령어를 실행합니다. Gradle Wrapper를 사용하면 프로젝트에 설정된 특정 Gradle 버전을 자동으로 다운로드하고 실행할 수 있습니다. 2️⃣ build Gradle의 기본 빌드(Build) 작업(Task)입니다. 프로젝트를 빌드하여 컴파일, 테스트, 패키징(JAR/ZIP 생성 등)을 수행합니다. build는 여러 단계를 포함하며, 일반적으로 다음을 실행합니다. compileJava : 자바 소스 코드 컴파일. processResources : 리소스 파일 처리. test : 테스트 실행. assemble : 아티팩트 생성(JAR 등). check : 품질 검사 및 테스트 통합. build : 위 단계들을 통합하여 실행. 3️⃣ -x test -x는 특정 작업(Task)을 제외(Exclude)한다는 옵션입니다. 여기서는 test 작업을 실행하지 않고 건너뛴다는 의미입니다. test는 JUnit등으로 작성된 단위 테스트를 실행하고 결과를 확인하는 작업입니다. 2️⃣ 명령어의 동작. ./gradlew build -x test는 테스트 단계를 제외하고 프로젝트를 빌드합니다. 빌드 과정에서: 소스 코드는 컴파일 되고, 리소스 파일은 처리되며, 결과물(JAR, ZIP 등)이 생성됩니다. 단, 테스트는 실행되지 않습니다. 3️⃣ 언제 사용하나요? 1️⃣ 테스트 실행 시간이 오래 걸릴 때. 테스트 단계는 시간이 오래 걸릴 수 있습니다. 빠르게 빌드를 완료하고 결과물(JAR 파일 등)만 생성하려는 경우 유용합니다. 2️⃣ 테스트가 실패하거나 불완전한 상태일 때. 테스트 코드가 완벽하지 않거나 실패하지만, 결과물만 생성이 필요한 경우 사용할 수 있습니다. 3️⃣ CI/CD 파이프라인에서 선택적으로 테스트를 건너뛸 때 테스트 단계가 별도의 프로세스에서 실행되는 경우, 빌드 시 테스트를 생략할 수 있습니다. 4️⃣ 예시. 1️⃣ 테스트 포함 빌드. ./gradlew build 테스트 단계도 포함됩니다. 2️⃣ 테스트 제외 빌드. ./gradlew build -x test 테스트 단계를 제외하고 빌드가 진행됩니다. 5️⃣ 주의사항. 테스트를 생략하면 코드의 품질이나 안정성을 보장할 수 없습니다. 최종 배포나 프로덕션 환경에서는 테스트 단계를 포함한 빌드를 사용하는 것이 권장됩니다. 6️⃣ 요약. ./gradlew build -x test 명령어는 Gradle을 사용해 프로젝트를 빌드하면서 테스트 단계를 생략하는 명령어입니다. 빠른 빌드가 필요하거나 테스트 상태와 관계없이 결과물만 생성하려는 상황에서 유용합니다.
Development tools and environments
· 2024-11-23
<
>
Touch background to close