Este proyecto utiliza paquetes binarios con licencia según el Acuerdo de usuario de JetBrains (https://www.jetbrains.com/legal/docs/toolbox/user/).
Esta es una versión de acceso temprano de nuestros complementos de Bazel para IntelliJ, Android Studio y CLion.
El complemento Bazel se carga periódicamente en JetBrains Marketplace desde el estado de este repositorio. Consulte la pestaña de lanzamientos para obtener más información.
Consulte nuestra última actualización de la comunidad para el complemento Bazel IntelliJ: Anuncio del mantenimiento conjunto de Bazel y JetBrains del complemento IntelliJ IDEA Bazel.
El proyecto Bazel alberga un grupo de interés especial (SIG) para el complemento Bazel IntelliJ IDE. Los detalles sobre el SIG y cómo unirse a la discusión se pueden encontrar en los estatutos del SIG.
Consulte la entrada de documentación sobre la compatibilidad del complemento en los productos, idiomas y sistemas operativos de JetBrains.
Los complementos de Bazel para IntelliJ y CLion se crean y publican desde la rama maestra de este repositorio. Un equipo externo de mantenedores aborda los problemas y las solicitudes de extracción de los complementos IntelliJ y CLion.
El complemento Bazel para Android Studio se crea y publica desde AOSP. La rama de Google ahora está en desuso.
Aunque el código de este repositorio y el de AOSP comparten la misma estructura y componentes principales, difieren entre sí.
Puede encontrar nuestro complemento en JetBrains Marketplace o directamente desde el IDE yendo a Settings -> Plugins -> Marketplace
y buscando Bazel
.
Las versiones Beta generalmente se cargan en el canal Beta 2 semanas antes de que se conviertan en versiones completas. Formas de instalarlos:
Settings -> Plugins -> Gear Icon -> Manage Plugin repositories
y agregue una de las siguientes URL según su producto. Ahora puede encontrar la última versión Beta en Settings -> Plugins -> Marketplace
o actualizar el complemento Bazel a Beta si ya lo instaló.https://plugins.jetbrains.com/plugins/beta/8609
https://plugins.jetbrains.com/plugins/beta/9554
https://plugins.jetbrains.com/plugins/beta/9185
Recomendamos ver este vídeo para familiarizarse con las funciones del complemento.
Para importar un proyecto de Bazel existente, elija Import Bazel Project
y siga las instrucciones del asistente de importación de proyectos.
Los documentos detallados están disponibles aquí.
Por favor lea este comentario #4745 (comentario)
Para obtener el resaltado correcto de Python, intente abrir la ventana "Estructura del proyecto" y configure la "faceta de Python" allí.
Para configurar correctamente el desarrollo remoto (https://www.jetbrains.com/remote-development/), siga estos pasos:
Instale Bazel, luego cree el objetivo *:*_bazel_zip
para el producto que desee:
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
desde la raíz del proyecto. Esto creará un archivo zip de complemento en bazel-bin/<PRODUCT>/<PRODUCT>_bazel.zip
, que se puede instalar directamente desde el IDE. <PRODUCT>
puede ser uno de ijwb, clwb, aswb
.
Si el IDE se niega a cargar el complemento debido a problemas de versión, especifique el ij_product
correcto. Estos tienen el formato <IDE>-oss-<VERSION>
con
<IDE>
es uno de intellij-ue, intellij, clion, android-studio
,<VERSION>
es uno de los oldest-stable, latest-stable, under-dev
. Alternativamente, puede configurar ij_product
para dirigir las versiones de IntelliJ o CLion, por ejemplo clion-2023.2
, intellij-2023.2
o intellij-ue-2023.2
Tenga en cuenta que existe una diferencia entre intellij
e intellij-ue
. ue
significa IntelliJ Ultimate Edition y contiene funciones adicionales para JavaScript y Go.
<IDE>-oss-oldest-stable
y <IDE>-oss-latest-stable
son alias para las dos versiones de IDE con las que el complemento es oficialmente compatible en un momento dado. <IDE>-oss-latest-stable
generalmente se asigna a la última versión de IDE publicada, mientras que <IDE>-oss-oldest-stable
se asigna a la anterior, por ejemplo, <IDE>-oss-oldest-stable=2022.1
y <IDE>-oss-latest-stable=2022.2
. Además, <IDE>-oss-under-dev
representa la próxima versión del IDE que estamos trabajando para respaldar. Puede encontrar una asignación completa de todas las versiones definidas actualmente en intellij_platform_sdk/build_defs.bzl
.
Puede importar el proyecto a IntelliJ (con el complemento Bazel) importando el archivo ijwb/ijwb.bazelproject
.
Puede crear el complemento para diferentes versiones de IDE ajustando la opción ij_product
desde la línea de comando o actualizando el archivo .bazelproject
para especificar el valor deseado para ij_product
en build_flags
.
Tenemos tres alias para las versiones del producto;
oldest-stable
es la versión IDE más antigua compatible con el complemento Bazel lanzado al canal estable de JetBrains.latest-stable
es la última versión de IDE compatible con el complemento Bazel lanzado en el canal estable de JetBrains.under-dev
es la versión IDE que actualmente estamos trabajando para admitir.Las versiones IDE actuales correspondientes de estos alias se pueden encontrar aquí.
Agradecemos contribuciones para soportar nuevas versiones de IDE. Sin embargo, para que el proceso de revisión sea más rápido y sencillo, recomendamos lo siguiente:
Solo podemos aceptar pequeñas solicitudes de extracción. Las solicitudes de extracción más pequeñas tienden a tener menos comentarios de revisión y, por lo tanto, pueden enviarse mucho más rápido. También tienden a entrar menos en conflicto con nuestro código base interno, lo que nos simplifica la integración. Por ejemplo, debe tener solicitudes de extracción separadas, cada una de las cuales se centra en un determinado cambio incompatible en lugar de tener una solicitud de extracción grande que solucione varios cambios.
Dado que seguimos admitiendo varias versiones de IDE mientras trabajamos en una nueva, debe asegurarse de que los cambios propuestos no interrumpan las versiones anteriores. Nuestro proceso de envío previo se encargará de probar sus cambios con todas las versiones compatibles y le permitirá saber si hubo algún problema.
Para facilitar la combinación de sus cambios en sentido ascendente, recomendamos seguir nuestro procedimiento para admitir la compatibilidad con versiones anteriores del SDK.
Primero considere ajustar el código del complemento para que funcione directamente con diferentes versiones de IDE. Ejemplos de estrategias para esto serían:
Para cambios incompatibles no triviales, el código para mantener la compatibilidad del SDK se encuentra en los directorios sdkcompat y testing/testcompat, donde testing/testcompat
contiene cambios de compatibilidad del SDK de solo prueba. Cada uno de los dos directorios contiene una subcarpeta por versión de IDE compatible con implementaciones específicas de la versión. La API externa de todas las clases debe ser la misma en todas las versiones, solo la implementación puede diferir. Al introducir un nuevo archivo en este directorio, asegúrese de duplicarlo adecuadamente en todas las versiones.
Seguimos estas tres técnicas para cambios incompatibles no triviales.
compatible
Preferido a Adaptador y Envoltorio cuando corresponda. Agregamos una clase de utilidad con solo métodos estáticos y un constructor privado y encapsulamos el método modificado con uno de los métodos estáticos. Si el cambio es lo suficientemente pequeño, no es necesario crear una nueva clase de utilidad y, en su lugar, debe agregar el cambio a la clase BaseSdkCompat. Ejemplo: pr/2345
Adaptador
Se utiliza cuando ampliamos una superclase y se actualiza su constructor. Creamos una nueva clase que extiende la superclase modificada y luego ampliamos esta nueva clase desde el código del complemento. Ejemplo: pr/2352
Envoltura
Se crea cuando se utiliza una nueva interfaz en un constructor de superclase. Creamos una clase contenedora que envuelve y proporciona la interfaz antigua o nueva según la versión del SDK y usamos esta clase contenedora en el código del complemento. Ejemplo: pr/2166
Todos los cambios de compatibilidad deben comentarse con #api{API_VERSION}
, por ejemplo, #api203
. Esto representa la última versión de API que requiere el código, es decir, la anterior a la versión que desea admitir. Esto es necesario para que sea más fácil encontrar y limpiar esta funcionalidad al pavimentar versiones antiguas.
Las clases de compatibilidad nunca deben importar código de complemento e intentamos mantener la lógica y el código en ellas lo más mínimo posible.
También podremos aceptar contribuciones para solucionar problemas generales o agregar nuevas funciones con algunas advertencias: