'intellij'에 해당하는 글 6건

TLSv1 deprecated

Daily/Prog 2021. 11. 24. 01:59

20년이 지나도 멈추지 않는 삽질 이야기.

 

WARN: This connection is using TLSv1 which is now deprecated and will be removed in a future release of Connector/J

 

warning 은 신호등에 비유하면 주황색과 같다. 가도 그만 멈추어도 그만인데 난 될수 있으면 멈추는 스타일이다. 그 바람에 또 소중한 시간들을 낭비한다. 위 경고는 TLSv1 / TLSv1.1 이 deprecated 되었으며, 이 프로토콜을 사용한 연결시 MySQL Connector/J Version 8.0.26 버전부터 발생하는 메시지다.

 

참고: https://docs.oracle.com/cd/E17952_01/connector-j-8.0-relnotes-en/news-8-0-26.html

 

3 Changes in MySQL Connector/J 8.0.26 (2021-07-20, General Availability)

3 Changes in MySQL Connector/J 8.0.26 (2021-07-20, General Availability) Version 8.0.26 is the latest General Availability release of the 8.0 series of MySQL Connector/J. It is suitable for use with MySQL Server versions 8.0, 5.7, and 5.6. It supports the

docs.oracle.com

해결은 간단하다. 난 8.0.27 버전을 사용중이었지만 8.0.26 아래 버전으로 다운그레이드 하면 되는데... 이제부터 삽질 시작이다.



Intellij 에서 gradle + java 프로젝트.

모듈은 두개. DB 와 API.

 

// DB module : build.gradle
dependencies {
    ...
    runtimeOnly 'mysql:mysql-connector-java:8.0.25'
    ...
}

// API module : build.gradle
dependencies {
    implementation project(':DB')
}

 

간단하다. DB 모듈에서 MySQL Connector/J 8.0.25 를 정의하고, API 모듈에서 그걸 가져다 썼다. 하지만 경고는 계속해서 나타났다. External Libraries 를 확인해보니 8.0.25 / 8.0.27 두 개 버전이 모두 import 되어 있었다. cache 문제겠거니 하고 기본적인 캐시 삭제 작업들을 시작했다.

 

  • Invalidate Caches -> Invalidate and Restart
  • Project Settings -> Libraries -> MySQL Connector/J 8.0.27 버전 삭제
  • $USER\.gradle\caches 디렉토리 삭제

 

gradle-library-duplicate

 

하지만 이 짓들을 다 해도 MySQL Connector/J 8.0.27 는 계속해서 살아났고 경고가 콘솔에 도배됐다. Find Usages 에서 확인해보니 API 모듈에서 사용중이란다. DB 모듈에서는 8.0.25 를 불러오는데, API 모듈에서 그걸 불러오면 8.0.27 로 변신한다니 이게 대체 무슨...

 

혹시라도 다른 라이브러리에 중복되어 있는지 dependency tree 도 확인해 봤다.

 

 

(DB)  mysql:mysql-connector-java:8.0.25

(API) mysql:mysql-connector-java:8.0.25 -> 8.0.27

 

다른 곳에서 정의 되어 있는건 한개도 없는데 그냥 바뀌어 버린다.ㅋㅋ

 

한참을 삽질한 끝에 밝혀낸 원인은...

gradle 에 정의한 두개의 플러그인 간에 의존성들이 달라 발생한 문제였다.

결국 재정의 했다...

 

dependencies {
    runtimeOnly 'mysql:mysql-connector-java:8.0.25'
    implementation project(':DB')
}

 

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Gradle Wrapper in IDEA

Tool/Gradle 2021. 10. 18. 22:14

Gradle 프로젝트 소스를 실행할 때, 로컬 컴퓨터에 프로젝트와 동일한 버전의 gradle 이 필요할 수 있는데 Wrapper 를 사용하면 해당 버전을 수동 설치할 필요가 없다. Gradle Wrapper 를 사용하면 지정된 버전의 gradle 이 없을 경우 자동으로 다운로드 및 설치를 하여, 해당 프로젝트를 동일한 gradle 버전으로 빌드할 수 있다. 구성원들의 안정적이고 표준화된 실행을 보장하기 위해 항상 Wrapper 로 빌드를 실행하는 것을 권장한다.

 

 

1. Wrapper 파일 생성

 

누군가 해당 소스를 받아서 Wrapper 를 사용할 수 있게 하려면, 미리 wrapper 파일을 생성해야 한다. 이 때는 gradle 이 로컬 컴퓨터에 설치되어 있어야 한다. 기본적으로 Gradle 프로젝트를 생성하는 init task 로 wrapper task 까지 실행된다. wrapper task 는 "Build Setup" 그룹에 존재하며, 이를 실행할 경우 프로젝트 디렉토리에 wrapper 파일을 생성해 준다.

 

$ gradle wrapper

gradle/wrapper/gradle-wrapper.jar
gradle/wrapper/gradle-wrapper.properties
gradlew(.bat)

 

  • jar 파일은 properties 파일에 기반하여 Gradle 배포판을 다운로드하는 코드가 포함된다.
  • gradlew 파일은 Wrapper 로 빌드를 실행하기 위한 스크립트이다.
  • properties 파일에는 gradle 버전과 배포판 타입을 선택할 수 있으며 기본적으로 사용중인 gradle 버전을 따른다.

 

명령줄에서 직접 버전과 배포판 타입을 지정하여 wrapper 파일을 생성할 수도 있고,

 

$ gradle wrapper --gradle-version 7.2 --distribution-type all

 

이미 민들어진 properties 파일을 수정하여 동일한 결과를 만들 수도 있다.

 

distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip

 

 

2. Wrapper 사용

 

$ gradlew build

 


 

※ IDEA 에서의 Gradle 설정

 

Wrapper 를 활용하는 가장 일반적인 방법은 프로젝트 생성하는 사람이 Wrapper 설정까지 마쳐놓고, 다른 개발자들이 IDEA 설정에서 wrapper 파일을 사용하도록 설정하는 것이다. 

 

intellij-settings-gradle

 

간혹 수동으로 설치한 gradle 과 프로젝트 설정의 gradle 버전에 혼동을 느낄 수 있다. 로컬에서 프로젝트 gradle 버전 설정은 [File] - [Settings...] - [Build, Execution, Deployment] - [Build Tools] - [Gradle] 에서 설정한다. 그렇게 설정한 버전은 [View] - [Tool Windows] - [gradle] 창에서 사용된다.

 

intellij-gradle-tool-window

 

하지만 [View] - [Tool Windows] - [Terminal] 에서의 gradle 은 수동 설치 후 로컬 컴퓨터의 환경 변수에 지정된 gradle 버전과 연결되어 있다. Terminal 에서 프로젝트 디렉토리 안에 있더라도 [Settings...] 에서 설정한 프로젝트의 gradle 버전과 연관이 없다. IDEA Terminal 이지만 CMD 와 같다.  [File] - [Settings...] - [Tools] - [Terminal] 에서 사용할 터미널 종류를 선택할 수 있다.

 

intellij-terminal

 


 

You can configure gradle wrapper to use distribution with sources. It will provide IDE with Gradle API/DSL documentation.

 

IDEA 에서 gradle-wrapper 사용시 배포판 타입이 바이너리 전용 파일을 사용하도록 설정되어 있는 경우 발생하는 알림이다. 수락하면 docs/source 를 포함한 all 버전의 gradle 로 설치되고 사용된다. (무시해도 상관없음)

 

 

Gradle 설치 파일의 배포판 타입(DistributionType).

 

  1. gradle-version-bin.zip (bin: 바이너리만)
  2. gradle-version-all.zip (all: docs, source 포함)

 

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

intellij-event-log

 

Windows Defender might be impacting your build and IDE performance. IntelliJ IDEA checked the following directories:

 

IntelliJ 실행시 간혹 보이는 알림이다. 바이러스 백신 프로그램에서 실시간 검색이 활성화되어 있는 경우, IDE 빌드시 새로 생성되는 파일들과 관련하여 여러 간섭을 하게 될 수 있고 그로 인해 빌드 성능에 영향을 미칠 수 있으니, 해당 IDE 프로세스(idea64.exe, fsnotifier64.exe, ...) 를 바이러스 실시간 검색에서 제외시키거나, IDE 관련 디렉토리들을 제외시키는 것을 권장하고 있다.

 

위 알림처럼 Windows Defender 알림이 발생했을 때, 자동 fix 시킨다면, 윈도우즈의 [바이러스 위협 방지] 에서 해당 디렉토리들을 자동으로 제외시킨다.

 

  • 프로젝트 작업 디렉토리
  • Gradle 캐시 디렉토리( %USERPROFILE%\.gradle)
  • IntelliJ IDEA 에서 설정 및 캐시 를 저장하는 데 사용하는 디렉토리
    - Configuration (idea.config.path): %APPDATA%\JetBrains\IntelliJIdea2020.3
    - System (idea.system.path): %LOCALAPPDATA%\JetBrains\IntelliJIdea2020.3

 

어떤 경우 위처럼 제외 설정을 마쳤는데도 계속해서 알림이 뜬다면, don't show me again 을 선택했는데도 계속해서 알림이 뜬다면 (idea.config.path)/options/other.xml 파일을 편집하여 해당  알림을 무시할 수도 있다.

 

<component name="PropertiesComponent"> 
    ...
    <property name="ignore.virus.scanning.warn.message" value="true" />
    ...
</component>

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Intellij 한글 깨짐

Daily/Prog 2019. 10. 24. 21:11

이 거지같은 한글 깨짐은 20년 동안 사라지질 않네.ㅋㅋ (한글 디스 아님!)




사건발단


1. 오늘 몇년전 프로젝트를 열었다가 IntelliJ 콘솔에서 우연히 한글깨짐을 발견했다.

2. 최근 프로젝트에서도 한글을 써보니 콘솔에서 한글깨짐이 발생했다. (한동안 영어만 쓰고 살았음...ㅡㅡv)

3. gradle 의 clean 작업을 실행하면서 build.gradle 의 한글이 깨졌으니 tomcat 의 문제는 아니다.

4. IntelliJ 가 실행될 때의 어느 곳에 있는 자바 옵션이 실행되는지를 체크하고 인코딩을 설정해야 한다. -Dfile.encoding=UTF-8



삽질


1. 시스템 환경변수 세팅

2. C:\Program Files\JetBrains\IntelliJ IDEA 2019.2.1\bin 의 idea.exe.vmoptions 과 idea64.exe.vmoptions

3. IntelliJ - Run/Debug Configurations - VM options


다 필요없음...



해결


IntelliJ - Help -  Edit Custom VM Options...  메뉴 열고  -Dfile.encoding=UTF-8  를 추가하여 해결.

파일위치는 C:\Users\username\.IntelliJIdea2019.2\config\idea64.exe.vmoption

오우... 사용자마다 세팅이 가능하게 되어 있나... 아니면 IntelliJ 사용자 등록하면서 별도 세팅이 되었던지...

암튼 이렇게 해결~~






WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Intellij upgrade

Daily/Prog 2019. 8. 27. 21:45

업그레이드 한지 1년 정도된 회사 컴퓨터. 요녀석은 온 첫날부터 블루스크린 기술을 보였었다. 1달에 한번 나타났던 블루스크린이 최근에는 하루에 5번도 나타나 나를 괴롭혔다. 나이가 들며 인내심이 강해진 나는 컴퓨터가 이 지경이 될때까지 참고 또 참았는데 프로젝트 하나가 살짝 끝난 시점에 결국 포맷을 결심했다. 블루스크린을 참았던 것도 각종 프로그램 재설치/재설정 하는게 구찮아서 였는데... 그렇게 해서 거의 1년만에 프로그램들도 버전 업그레이드를 했는데... intellij 가 문제가 됐다.




처음엔  .gitignore  파일이 문제였다. 일단 뭔가 문제가 생긴듯한 저 이상한 아이콘... 인식이 안됐는줄 알고 여기서 2시간 정도 뻘짓. 실제로 새로 pull 받은 파일들임에도 불구하고 git 에 untracked file 들이 수두룩하게 떴음. git 신버전 깔았다가 구버전도 깔았다가, git 이랑 gitignore 플러그인에서 해결될 만한것도 설치해보고 지우고... 하지만 나중에 보니 저 아이콘은 단지 .gitignore 의 새로운... 아이콘일 뿐이고, 문법이 엄격해졌는지 몇개의 상위 디렉토리가 통과된 바람에 untracked file 이 나타난 것이었다. 명확하지 않았던 정규화 사용이 문제... 문법 재조정으로 해결.




또하나. 4시간짜리 뻘짓. gradle 창에 모듈별 task 가 안나오는 또 하나의 어이없는 상황. 이전 버전 intellij 에서 잘나오던게 갑자기 안나오니 참... gradle 설정을 싹다 뒤졌다. gradle 버전별로 깔아보고 쌩쑈를 다했는데 결국엔 intellij 에서 gradle 의 project-level setting 이 사라져버린 것. 저  using explicit module groups  옵션을 선택하지 못하는 바람에 생겨버린 요상한 상황. 결국 .(dot) 으로 구분된 모듈명에서 dot 을 없애버렸다.ㅋㅋ 모듈명에 dot 을 붙인 분도 좀 그렇지만 이렇게 연락도 없이 옵션을 막 빼버리는건 너무한거 아니오?! 갈수록 새 제품 쓰는게 짜증난다. 설정하고 세팅하고 이런데다가 시간 허비하는거 이제 제발 그만~~~~





WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,