이 프로젝트는 JetBrains 사용자 계약(https://www.jetbrains.com/legal/docs/toolbox/user/)에 따라 라이선스가 부여된 바이너리 번들을 사용합니다.
이는 IntelliJ, Android Studio, CLion용 Bazel 플러그인의 초기 액세스 버전입니다.
Bazel 플러그인은 이 저장소 상태에서 정기적으로 JetBrains Marketplace에 업로드됩니다. 자세한 내용은 릴리스 탭을 참조하세요.
Bazel IntelliJ 플러그인에 대한 최신 커뮤니티 업데이트인 IntelliJ IDEA Bazel 플러그인의 Bazel 및 JetBrains 공동 유지 관리 발표를 참조하세요 .
Bazel 프로젝트는 Bazel IntelliJ IDE 플러그인을 위한 SIG(Special Interest Group)를 호스팅하고 있습니다. SIG에 대한 자세한 내용과 토론 참여 방법은 SIG 헌장에서 확인할 수 있습니다.
JetBrains 제품, 언어 및 운영 체제 전반에 걸친 플러그인 지원에 대한 문서 항목을 참조하세요.
IntelliJ 및 CLion용 Bazel 플러그인은 이 저장소의 마스터 브랜치에서 빌드 및 릴리스됩니다. 외부 유지관리자 팀이 IntelliJ 및 CLion 플러그인 문제와 풀 요청을 해결합니다.
Android Studio용 Bazel 플러그인은 AOSP에서 빌드 및 출시되었습니다. Google 분기는 이제 더 이상 사용되지 않습니다.
이 저장소와 AOSP의 코드는 동일한 구조와 핵심 구성요소를 공유하지만 서로 다릅니다.
JetBrains Marketplace에서 플러그인을 찾거나 IDE에서 Settings -> Plugins -> Marketplace
로 이동하여 Bazel
을 검색하여 직접 찾을 수 있습니다.
베타 버전은 일반적으로 정식 릴리스가 되기 2주 전에 베타 채널에 업로드됩니다. 설치 방법:
Settings -> Plugins -> Gear Icon -> Manage Plugin repositories
에서 IDE에 베타 채널을 추가하고 제품에 따라 다음 URL 중 하나를 추가하세요. 이제 Settings -> Plugins -> Marketplace
에서 최신 베타를 찾거나 이미 설치한 경우 Bazel 플러그인을 베타로 업데이트할 수 있습니다.https://plugins.jetbrains.com/plugins/beta/8609
https://plugins.jetbrains.com/plugins/beta/9554
https://plugins.jetbrains.com/plugins/beta/9185
플러그인 기능에 익숙해지려면 이 비디오를 시청하는 것이 좋습니다.
기존 Bazel 프로젝트를 가져오려면 Import Bazel Project
선택하고 프로젝트 가져오기 마법사의 지침을 따릅니다.
자세한 문서는 여기에서 확인할 수 있습니다.
이 댓글 #4745(댓글)을 읽어보세요.
올바른 Python 강조 표시를 얻으려면 "프로젝트 구조" 창을 열고 거기에 "Python 패싯"을 설정해 보십시오.
원격 개발(https://www.jetbrains.com/remote-development/)을 올바르게 설정하려면 다음 단계를 따르세요.
Bazel을 설치한 후 원하는 제품에 대한 대상 *:*_bazel_zip
빌드합니다.
bazel build //ijwb:ijwb_bazel_zip --define=ij_product=intellij-ue-oss-latest-stable
bazel build //clwb:clwb_bazel_zip --define=ij_product=clion-oss-latest-stable
bazel build //aswb:aswb_bazel_zip --define=ij_product=android-studio-oss-latest-stable
프로젝트 루트에서. 그러면 bazel-bin/<PRODUCT>/<PRODUCT>_bazel.zip
에 플러그인 zip 파일이 생성되며, IDE에서 직접 설치할 수 있습니다. <PRODUCT>
ijwb, clwb, aswb
중 하나일 수 있습니다.
버전 문제로 인해 IDE가 플러그인 로드를 거부하는 경우 올바른 ij_product
지정하십시오. <IDE>-oss-<VERSION>
형식입니다.
<IDE>
는 intellij-ue, intellij, clion, android-studio
중 하나입니다.<VERSION>
은 oldest-stable, latest-stable, under-dev
버전 중 하나입니다. 또는 ij_product
직접 IntelliJ 또는 CLion 버전으로 설정할 수도 있습니다(예: clion-2023.2
, intellij-2023.2
또는 intellij-ue-2023.2
intellij
와 intellij-ue
사이에는 차이가 있습니다. ue
IntelliJ Ultimate Edition을 나타내며 Go뿐만 아니라 JavaScript에 대한 추가 기능을 포함합니다.
<IDE>-oss-oldest-stable
및 <IDE>-oss-latest-stable
특정 시점에 플러그인이 공식적으로 호환되는 두 IDE 버전의 별칭입니다. <IDE>-oss-latest-stable
일반적으로 마지막으로 출시된 IDE 버전에 매핑되는 반면 <IDE>-oss-oldest-stable
그 바로 전 버전에 매핑됩니다(예: <IDE>-oss-oldest-stable=2022.1
및 <IDE>-oss-latest-stable=2022.2
. 또한 <IDE>-oss-under-dev
우리가 지원하기 위해 노력하고 있는 IDE의 향후 버전을 나타냅니다. 현재 정의된 모든 버전의 전체 매핑은 intellij_platform_sdk/build_defs.bzl
에서 찾을 수 있습니다.
ijwb/ijwb.bazelproject
파일 가져오기를 통해 프로젝트를 IntelliJ(Bazel 플러그인 사용)로 가져올 수 있습니다.
명령줄에서 ij_product
옵션을 조정하거나 .bazelproject
파일을 업데이트하여 build_flags
아래의 ij_product
에 원하는 값을 지정하여 다양한 IDE 버전용 플러그인을 빌드할 수 있습니다.
제품 버전에는 세 가지 별칭이 있습니다.
oldest-stable
은 JetBrains stable 채널에 출시된 Bazel 플러그인이 지원하는 가장 오래된 IDE 버전입니다.latest-stable
JetBrains 안정 채널에 출시된 Bazel 플러그인이 지원하는 최신 IDE 버전입니다.under-dev
는 현재 지원을 위해 노력하고 있는 IDE 버전입니다.이러한 별칭의 현재 해당 IDE 버전은 여기에서 찾을 수 있습니다.
새로운 IDE 버전을 지원하기 위한 기여를 환영합니다. 그러나 검토 과정을 더 빠르고 쉽게 진행하려면 다음을 권장합니다.
우리는 작은 풀 요청만 받아들일 수 있습니다. 작은 풀 요청은 리뷰 댓글이 더 적은 경향이 있으므로 훨씬 더 빨리 제출될 수 있습니다. 또한 내부 코드 기반과의 충돌이 적어 통합이 단순화되는 경향이 있습니다. 예를 들어, 여러 변경사항을 수정하는 대규모 풀 요청을 두는 대신, 호환되지 않는 특정 변경 사항에 초점을 맞춘 별도의 풀 요청을 각각 보유해야 합니다.
새로운 버전을 작업하는 동안 여러 IDE 버전을 계속 지원하므로 제안된 변경 사항이 이전 버전을 손상시키지 않는지 확인해야 합니다. 사전 제출 파이프라인은 지원되는 모든 버전에 대해 변경 사항을 테스트하고 문제가 있는지 알려줍니다.
변경 사항을 업스트림에 쉽게 병합하려면 SDK 이전 버전과의 호환성을 지원하는 절차를 따르는 것이 좋습니다.
먼저 다른 IDE 버전에서 직접 작동하도록 플러그인 코드를 조정하는 것을 고려하십시오. 이에 대한 예시 전략은 다음과 같습니다.
사소하지 않은 호환되지 않는 변경 사항의 경우 SDK 호환성을 유지하기 위한 코드는 sdkcompat 및 test/testcompat 디렉터리에 있으며, 여기서 testing/testcompat
테스트 전용 SDK 호환성 변경 사항을 보유합니다. 두 디렉터리 각각에는 버전별 구현이 포함된 지원되는 IDE 버전별 하위 폴더가 포함되어 있습니다. 모든 클래스의 외부 API는 버전에 따라 동일해야 하며 구현이 다를 수 있습니다. 이 디렉터리에 새 파일을 도입할 때 모든 버전에 걸쳐 적절하게 복제했는지 확인하세요.
우리는 사소하지 않은 호환되지 않는 변경 사항에 대해 다음 세 가지 기술을 따릅니다.
호환
해당하는 경우 어댑터 및 래퍼보다 선호됩니다. 정적 메서드와 전용 생성자만 포함된 util-class를 추가하고 정적 메서드 중 하나로 변경된 메서드를 래핑합니다. 변경 사항이 충분히 작으면 새 util-class를 생성할 필요가 없으며 대신 BaseSdkCompat 클래스에 변경 사항을 추가해야 합니다. 예: pr/2345
어댑터
슈퍼 클래스를 확장하고 해당 생성자가 업데이트될 때 사용됩니다. 변경된 슈퍼 클래스를 확장하는 새 클래스를 생성한 다음 플러그인 코드에서 이 새 클래스를 확장합니다. 예: pr/2352
싸개
슈퍼 클래스 생성자에서 새 인터페이스가 사용될 때 생성됩니다. SDK 버전에 따라 이전 인터페이스나 새 인터페이스를 래핑하고 제공하는 래퍼 클래스를 생성하고 플러그인 코드에서 이 래퍼 클래스를 사용합니다. 예: pr/2166
모든 호환성 변경 사항은 #api{API_VERSION}
으로 주석 처리되어야 합니다(예: #api203
. 이는 코드가 필요한 마지막 API 버전, 즉 지원하려는 버전 이전 버전을 나타냅니다. 이는 이전 버전을 포장할 때 이 기능을 더 쉽게 찾고 정리하는 데 필요합니다.
Compat 클래스는 절대로 플러그인 코드를 가져와서는 안 되며, 우리는 그 안에 있는 로직과 코드를 가능한 한 최소화하려고 노력합니다.
또한 일반적인 문제를 해결하거나 몇 가지 주의 사항이 있는 새로운 기능을 추가하기 위한 기여를 수락할 수도 있습니다.