-cp를 줬는데 java -jar가 라이브러리 클래스를 못 찾는 이유
라이브러리 JAR이 있어도 java -jar는 명령행의 -cp를 쓰지 않는다. 같은 두 JAR의 실패·성공을 비교하고, 메인 클래스 직접 실행과 manifest Class-Path 중 무엇을 선택할지 확인한다. 상대 경로의 JAR 기준도 다른 작업 폴더에서 검증했다.
빌드노트
빌드·배포 카테고리의 글입니다.
총 49개의 글
라이브러리 JAR이 있어도 java -jar는 명령행의 -cp를 쓰지 않는다. 같은 두 JAR의 실패·성공을 비교하고, 메인 클래스 직접 실행과 manifest Class-Path 중 무엇을 선택할지 확인한다. 상대 경로의 JAR 기준도 다른 작업 폴더에서 검증했다.
Maven filtering이 런타임용 ${...}를 같은 이름의 빌드 property로 바꾸는 조건을 비교한다. 원본과 target 리소스를 읽고, 파일 분리와 escapeString 설정 중 선택하는 방법을 설명한다. 역슬래시만 붙인 경우와 설정까지 맞춘 경우의 차이도 실제 출력으로 확인했다.
npm run 옵션이 자식 스크립트에서 보이지 않을 때 -- 앞뒤를 확인한다. npm 10.9.8에서 실제 argv와 npm 설정 환경 변수를 비교하고, 공백 값과 pre/post 스크립트에 전달되는 인자의 차이를 설명한다.
target에 만든 JAR과 로컬 저장소의 의존성은 다르다. 별도 Maven 프로젝트가 요구하는 좌표와 저장소를 맞추고, package 뒤 실패하던 소비 빌드가 install 뒤 성공하는 차이를 확인한다.
JSON 설정을 바꿔도 같은 Node 프로세스의 require는 기존 객체를 재사용한다. 읽는 경로와 캐시를 확인하고, 직접 읽기·파싱과 새 프로세스의 결과를 비교해 실행 중 갱신과 시작 시 고정 중 적용 방식을 정한다.
같은 Node 패키지도 import와 require가 서로 다른 진입점을 고를 수 있다. 실제 선택 경로와 합성 기능 값을 비교하고, 조건 키 순서와 default의 적용 범위를 확인해 지원하는 호출 방식으로 맞춘다.
CommonJS 순환 require에서 초기화 중 저장한 값은 undefined로 남아도, 같은 객체를 로딩 후 다시 읽으면 값이 보일 수 있다. 두 모듈의 실행 순서와 실제 경고를 비교하고, 의존을 끊을지 읽는 시점을 늦출지 판단한다.
TypeScript paths에 둔 별칭은 Node의 런타임 매핑이 아니다. 같은 파일을 일반 별칭·# imports·상대 경로로 요청한 결과를 비교하고, 별도 package.json을 가진 패키지에서 # 이름이 어디까지 적용되는지 확인한다.
Failsafe는 통합 테스트 실행과 실패 판정을 나눈다. 실패 IT에서 integration-test는 종료 0과 후처리 누락, verify는 종료 1과 후처리 실행을 보인 실제 비교를 바탕으로 두 goal의 바인딩과 CI의 마지막 lifecycle 단계를 확인한다.
format.js가 있어도 ESM의 ./format은 자동으로 그 파일을 찾지 않는다. 실제 파일 부재와 확장자 생략, 디렉터리 import를 실행 결과로 구별하고 import하는 파일을 기준으로 경로를 고친다.
Maven의 -DskipTests는 테스트 실행을 생략해도 테스트 소스 컴파일은 남긴다. 고정 버전 프로젝트에서 컴파일 오류와 단언 실패를 비교하고, 실패 목표가 testCompile인지 surefire:test인지에 따라 테스트 수정과 제한적 컴파일 생략을 판단한다.
PowerShell에서 npm을 호출해도 Windows의 기본 스크립트 셸은 cmd.exe다. 같은 환경값의 직접 실행·npm 실행·셸 지정 결과를 비교하고, script-shell 조회와 명령 단위 지정, Node process.env로 옮기는 선택을 설명한다.