WORKSPACE'te bağımlılıkları gölgelendirme
Mümkün olduğunda projenizde her birinin oluşturduğunuz bağımlılıklar için gereklidir. Projenizin sonunda ikilik. Diğer durumlarda bağımlılıkları gölgeleyebilirsiniz:
projem/ÇALIŞMA ALANI
workspace(name = "myproject")
local_repository(
name = "A",
path = "../A",
)
local_repository(
name = "B",
path = "../B",
)
A/ÇALIŞMA ALANI
workspace(name = "A")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "testrunner",
urls = ["https://github.com/testrunner/v1.zip"],
sha256 = "...",
)
B/ÇALIŞMA ALANI
workspace(name = "B")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "testrunner",
urls = ["https://github.com/testrunner/v2.zip"],
sha256 = "..."
)
A
ve B
bağımlılarının ikisi de testrunner
ürününün farklı sürümlerine bağlıdır.
Her ikisini de çakışma olmadan myproject
içine
myproject/WORKSPACE
:
workspace(name = "myproject")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "testrunner-v1",
urls = ["https://github.com/testrunner/v1.zip"],
sha256 = "..."
)
http_archive(
name = "testrunner-v2",
urls = ["https://github.com/testrunner/v2.zip"],
sha256 = "..."
)
local_repository(
name = "A",
path = "../A",
repo_mapping = {"@testrunner" : "@testrunner-v1"}
)
local_repository(
name = "B",
path = "../B",
repo_mapping = {"@testrunner" : "@testrunner-v2"}
)
Bu mekanizmayı elmasları birleştirmek için de kullanabilirsiniz. Örneğin, A
ve B
aynı bağımlılığa sahip ama farklı adlarla adlandırabilir ve bu bağımlılıklara
myproject/WORKSPACE
içinde.
Komut satırından depoları geçersiz kılma
Komut satırından, bildirilen depoyu yerel bir depoyla geçersiz kılmak için:
her bir arama terimi için
--override_repository
tıklayın. Bu işaretin kullanılması harici depoların içeriğini değiştirir:
kaynak kodunuzu değiştirebilirsiniz.
Örneğin, @foo
yerine /path/to/local/foo
yerel dizinini geçersiz kılmak için
--override_repository=foo=/path/to/local/foo
işaretini geçin.
Kullanım alanları arasında şunlar yer alır:
- Hata ayıklama sorunları. Örneğin, bir
http_archive
deposunu yerel dizinde kalır. - Tedarikçi firma. Ağ çağrıları yapamayacağınız bir ortamdaysanız Ağ tabanlı depo kurallarını yerel dizinlere işaret edecek şekilde geçersiz kıl .
Proxy kullanma
Bazel, proxy adreslerini HTTPS_PROXY
ve HTTP_PROXY
reklamlarından alır
ortam değişkenlerini kullanır ve bunları HTTP
ve HTTPS
dosyalarını indirmek için kullanır (
belirtilir).
IPv6 desteği
Yalnızca IPv6 kullanan makinelerde Bazel, bağımlılıkları değişiklik yapmadan indirebilir. Ancak,
çift yığınlı IPv4/IPv6 makinelerinde Bazel, Java ile aynı kuralı izler.
IPv4 tercih edilir. Bazı durumlarda, örneğin IPv4'ün
ağı çözümleyemez/harici adreslere erişemez. Bu durum, Network
unreachable
istisnalarına ve derleme hatalarına neden olabilir. Böyle durumlarda,
Bazel'in
java.net.preferIPv6Addresses=true
sistem
özelliği ekleyin.
Özellikle:
--host_jvm_args=-Djava.net.preferIPv6Addresses=true
başlangıcını kullan seçeneğini kullanabilirsiniz. Örneğin,.bazelrc
dosyanızda şu satırı ekleyin:startup --host_jvm_args=-Djava.net.preferIPv6Addresses=true
İnternet'e bağlanması gereken Java derleme hedeflerini çalıştırırken (ör. entegrasyon testlerinde olduğu gibi)
--jvmopt=-Djava.net.preferIPv6Addresses=true
aracı flag'i tıklayın. Örneğin,.bazelrc
dosya:build --jvmopt=-Djava.net.preferIPv6Addresses
rules_jvm_external
kullanıyorsanız bağımlılık sürümü çözümü içinCOURSIER_OPTS
ortamına-Djava.net.preferIPv6Addresses=true
değişkeni için JVM seçenekleri sağlayan Eğitmen.
Çevrimdışı derlemeler
Bazen bir yapıyı çevrimdışı olarak çalıştırmak isteyebilirsiniz. Örneğin,
ekleyebilirsiniz. Böyle basit kullanım alanları için gerekli depoları
bazel fetch
veya bazel sync
. Şu süreçte daha fazla depo getirmeyi devre dışı bırakmak için:
için --nofetch
seçeneğini kullanın.
Gerekli tüm dosyaların farklı bir varlığın sağlandığı gerçek çevrimdışı derlemeler için
Bazel, --distdir
seçeneğini destekler. Bu işaret, Bazel'a önce
veri saklama kuralı, Bazel'dan
ctx.download
ile bir dosyayı getirin veya
ctx.download_and_extract
. Ölçüt
gerekli dosyanın karma toplamını sağlarsa Bazel,
basename içerir ve karma değer eşleşirse yerel kopyayı kullanır.
Bazel, bu tekniği kullanarak dağıtım
test eder.
Bunu, gerekli tüm harici verileri toplayarak
bağımlılıkları
dahili
distdir_tar
.
Bazel, bilgi deposu kurallarında rastgele komutların bilinmeden yürütülmesine olanak tanır şebekeye çağrı gönderirler ve bu nedenle tam çevrimdışı derlemeleri zorlayamazlar. Alıcı: bir derlemenin çevrimdışı olarak düzgün çalışıp çalışmadığını test edin, ağı manuel olarak engelleyin (çünkü Bazel, kendi önyüklemesinde test) gerektirir.