Este projeto usa pacotes binários licenciados sob o Contrato do Usuário JetBrains (https://www.jetbrains.com/legal/docs/toolbox/user/).
Esta é uma versão de acesso antecipado dos nossos plug-ins Bazel para IntelliJ, Android Studio e CLion.
O plug-in Bazel é carregado regularmente no JetBrains Marketplace a partir do estado deste repositório. Consulte a guia de lançamentos para obter mais informações.
Consulte nossa atualização mais recente da comunidade para o plug-in Bazel IntelliJ: Anunciando a co-manutenção do Bazel e JetBrains do plug-in IntelliJ IDEA Bazel.
O projeto Bazel está hospedando um Grupo de Interesse Especial (SIG) para o plug-in Bazel IntelliJ IDE. Detalhes sobre o SIG e como participar da discussão podem ser encontrados no estatuto do SIG.
Consulte a entrada da documentação sobre o suporte do plug-in em produtos, idiomas e sistemas operacionais da JetBrains.
Os plug-ins do Bazel para IntelliJ e CLion são criados e lançados no branch master deste repositório. Uma equipe externa de mantenedores aborda problemas de plugins IntelliJ e CLion e solicitações pull.
O plug-in Bazel para Android Studio foi criado e lançado no AOSP. A filial do Google agora está obsoleta.
Embora o código neste repositório e no AOSP compartilhem a mesma estrutura e componentes principais, eles divergiram um do outro.
Você pode encontrar nosso plugin no JetBrains Marketplace ou diretamente no IDE acessando Settings -> Plugins -> Marketplace
e procurando por Bazel
.
As versões beta geralmente são enviadas para o canal Beta 2 semanas antes de se tornarem lançamentos completos. Maneiras de instalá-los:
Settings -> Plugins -> Gear Icon -> Manage Plugin repositories
e adicione um dos seguintes URLs dependendo do seu produto. Agora você pode encontrar o beta mais recente em Settings -> Plugins -> Marketplace
ou atualizar o plugin Bazel para Beta se já o tiver instalado.https://plugins.jetbrains.com/plugins/beta/8609
https://plugins.jetbrains.com/plugins/beta/9554
https://plugins.jetbrains.com/plugins/beta/9185
Recomendamos assistir a este vídeo para se familiarizar com os recursos do plugin.
Para importar um projeto Bazel existente, escolha Import Bazel Project
e siga as instruções no assistente de importação de projeto.
Documentos detalhados estão disponíveis aqui.
Por favor, leia este comentário # 4745 (comentário)
Para obter o realce correto do python, tente abrir a janela "Estrutura do projeto" e defina "faceta Python" lá
Para configurar corretamente o Desenvolvimento Remoto (https://www.jetbrains.com/remote-development/), siga estas etapas:
Instale o Bazel e crie o destino *:*_bazel_zip
para o produto desejado:
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
da raiz do projeto. Isso criará um arquivo zip do plug-in em bazel-bin/
, que pode ser instalado diretamente do IDE.
pode ser ijwb, clwb, aswb
.
Se o IDE se recusar a carregar o plugin devido a problemas de versão, especifique o ij_product
correto. Eles estão no formato
com
sendo um dos intellij-ue, intellij, clion, android-studio
,
sendo um dos oldest-stable, latest-stable, under-dev
. Como alternativa, você pode definir ij_product
para direcionar versões do IntelliJ ou CLion, por exemplo clion-2023.2
, intellij-2023.2
ou intellij-ue-2023.2
Observe que há uma diferença entre intellij
e intellij-ue
. ue
significa IntelliJ Ultimate Edition e contém recursos adicionais para JavaScript e também para Go.
e
são apelidos para as duas versões IDE com as quais o plugin é oficialmente compatível em um determinado momento.
geralmente mapeia para a última versão IDE lançada, enquanto
mapeia para aquela imediatamente anterior, por exemplo,
e
. Além disso,
representa a próxima versão do IDE que estamos trabalhando para oferecer suporte. Um mapeamento completo de todas as versões atualmente definidas pode ser encontrado em intellij_platform_sdk/build_defs.bzl
.
Você pode importar o projeto para o IntelliJ (com o plugin Bazel) importando o arquivo ijwb/ijwb.bazelproject
.
Você pode construir o plug-in para diferentes versões do IDE ajustando a opção ij_product
na linha de comando ou atualizando o arquivo .bazelproject
para especificar o valor desejado para ij_product
em build_flags
.
Temos três aliases para versões de produtos;
oldest-stable
é a versão IDE mais antiga suportada pelo plug-in Bazel lançada no canal estável da JetBrains.latest-stable
é a versão mais recente do IDE compatível com o plug-in Bazel lançado no canal estável do JetBrains.under-dev
é a versão IDE que estamos trabalhando atualmente para oferecer suporte.As versões atuais do IDE correspondentes desses aliases podem ser encontradas aqui.
Aceitamos contribuições para oferecer suporte a novas versões do IDE. No entanto, para tornar o processo de revisão mais rápido e fácil, recomendamos o seguinte:
Só podemos aceitar pequenas solicitações pull. Solicitações pull menores tendem a ter menos comentários de revisão e, portanto, podem ser enviadas com muito mais rapidez. Eles também tendem a entrar menos em conflito com nossa base de código interna, simplificando a integração para nós. Por exemplo, você deve ter solicitações pull separadas, cada uma focada em uma determinada alteração incompatível, em vez de ter uma solicitação pull grande corrigindo várias alterações.
Como continuamos a oferecer suporte a diversas versões do IDE enquanto trabalhamos em uma nova, você precisa ter certeza de que as alterações propostas não prejudicam as versões mais antigas. Nosso pipeline de pré-envio se encarregará de testar suas alterações em todas as versões suportadas e informará se houve algum problema.
Para facilitar a mesclagem de suas alterações no upstream, recomendamos seguir nosso procedimento para oferecer suporte à compatibilidade com versões anteriores do SDK.
Primeiro considere ajustar o código do plugin para que ele funcione diretamente com diferentes versões do IDE. Exemplos de estratégias para isso seriam:
Para alterações incompatíveis não triviais, o código para manter a compatibilidade do SDK reside nos diretórios sdkcompat e testing/testcompat, onde testing/testcompat
contém alterações de compatibilidade do SDK somente para teste. Cada um dos dois diretórios contém uma subpasta por versão IDE suportada com implementações específicas da versão. A API externa de todas as classes deve ser a mesma entre as versões, apenas a implementação pode ser diferente. Ao introduzir um novo arquivo neste diretório, certifique-se de duplicá-lo adequadamente em todas as versões.
Seguimos essas três técnicas para mudanças incompatíveis não triviais.
Compatível
De preferência ao adaptador e ao invólucro, quando aplicável. Adicionamos uma classe util apenas com métodos estáticos e um construtor privado e agrupamos o método alterado por um dos métodos estáticos. Se a alteração for pequena o suficiente, você não precisará criar uma nova classe de utilitário e deverá adicionar a alteração à classe BaseSdkCompat. Exemplo: pr/2345
Adaptador
Usado quando estendemos uma superclasse e seu construtor é atualizado. Criamos uma nova classe estendendo a superclasse alterada e, em seguida, estendemos essa nova classe a partir do código do plugin. Exemplo: pr/2352
Invólucro
Criado quando uma nova interface é usada em um construtor de superclasse. Criamos uma classe wrapper que envolve e fornece a interface antiga ou nova com base na versão do SDK e usamos essa classe wrapper no código do plugin. Exemplo: pr/2166
Todas as alterações de compatibilidade devem ser comentadas com #api{API_VERSION}
, por exemplo, #api203
. Isto representa a última versão da API que requer o código, ou seja, aquela anterior à versão que você pretende oferecer suporte. Isso é necessário para facilitar a localização e limpeza dessa funcionalidade ao pavimentar versões antigas.
As classes Compat nunca devem importar o código do plugin e tentamos manter a lógica e o código nelas o mínimo possível.
Também poderemos aceitar contribuições para corrigir problemas gerais ou adicionar novos recursos com algumas ressalvas: