برای استفاده از پکیجهای Flutter، آدرس mirror ما جایگزین pub.dev میشود.
کافیست متغیر PUB_HOSTED_URL را تنظیم کنید تا تمام دستورات
flutter pub get و dart pub add بهصورت خودکار از این سرور دریافت شوند.
Flutter برای دانلود SDK، engine و artifactها از FLUTTER_STORAGE_BASE_URL استفاده میکند.
متغیر PUB_HOSTED_URL هم آدرس mirror پکیجهای pub را مشخص میکند.
$env:FLUTTER_STORAGE_BASE_URL="https://flutter.tarazerp.ir"
$env:PUB_HOSTED_URL="https://pub.tarazerp.ir"
flutter pub get
$env:FLUTTER_STORAGE_BASE_URL="https://flutter.tarazerp.ir"; $env:PUB_HOSTED_URL="https://pub.tarazerp.ir"; flutter build apk
export FLUTTER_STORAGE_BASE_URL="https://flutter.tarazerp.ir"
export PUB_HOSTED_URL="https://pub.tarazerp.ir"
flutter pub get
FLUTTER_STORAGE_BASE_URL="https://flutter.tarazerp.ir" PUB_HOSTED_URL="https://pub.tarazerp.ir" flutter build apk
[Environment]::SetEnvironmentVariable("FLUTTER_STORAGE_BASE_URL", "https://flutter.tarazerp.ir", "User")
[Environment]::SetEnvironmentVariable("PUB_HOSTED_URL", "https://pub.tarazerp.ir", "User")
[Environment]::SetEnvironmentVariable("FLUTTER_STORAGE_BASE_URL", "https://flutter.tarazerp.ir", "Machine")
[Environment]::SetEnvironmentVariable("PUB_HOSTED_URL", "https://pub.tarazerp.ir", "Machine")
export FLUTTER_STORAGE_BASE_URL="https://flutter.tarazerp.ir"
export PUB_HOSTED_URL="https://pub.tarazerp.ir"
source ~/.zshrc
export FLUTTER_STORAGE_BASE_URL="https://flutter.tarazerp.ir"
export PUB_HOSTED_URL="https://pub.tarazerp.ir"
source ~/.bashrc
KEY=VALUE دارد، بدون export.FLUTTER_STORAGE_BASE_URL="https://flutter.tarazerp.ir"
PUB_HOSTED_URL="https://pub.tarazerp.ir"
اگه نمیخوای هر پروژه رو جداگانه تنظیم کنی، این فایل رو یکبار بساز تا همه پروژههای Gradle روی سیستمت — از جمله included buildهای داخل Flutter SDK — به صورت خودکار به Mirror هدایت بشن.
init.d را اگر وجود ندارد بسازید):
// ========================================================
// Flutter Mirror – Gradle Init Script (Kotlin DSL)
// این فایل همه درخواستهای Gradle رو به سمت mirror هدایت میکنه
// حتی برای included buildهای داخلی Flutter SDK
// ========================================================
val MIRROR = "https://maven.tarazerp.ir"
val REDIRECT_HOSTS = setOf(
"repo.maven.apache.org",
"repo1.maven.org",
"dl.google.com",
"maven.google.com",
"plugins.gradle.org",
"jitpack.io",
"jcenter.bintray.com",
"maven.fabric.io",
"developer.huawei.com",
"storage.googleapis.com",
)
fun shouldRedirect(url: String) = REDIRECT_HOSTS.any { url.contains(it) }
fun interceptRepos(repos: RepositoryHandler) {
repos.whenObjectAdded {
if (this is MavenArtifactRepository) {
val original = this.url.toString()
if (shouldRedirect(original)) {
logger.info("[Mirror] Redirecting: $original → $MIRROR")
this.setUrl(MIRROR)
}
}
}
}
gradle.beforeSettings {
pluginManagement {
interceptRepos(repositories)
repositories {
maven(url = MIRROR)
}
}
@Suppress("UnstableApiUsage")
dependencyResolutionManagement {
interceptRepos(repositories)
repositories {
maven(url = MIRROR) { name = "flutter-mirror" }
}
}
}
gradle.allprojects {
buildscript {
interceptRepos(repositories)
repositories {
clear()
maven(url = MIRROR)
}
}
interceptRepos(repositories)
}
// ========================================================
// Flutter Mirror – Gradle Init Script (Groovy)
// این فایل همه درخواستهای Gradle رو به سمت mirror هدایت میکنه
// ========================================================
def MIRROR = "https://maven.tarazerp.ir"
def REDIRECT_HOSTS = [
"repo.maven.apache.org",
"repo1.maven.org",
"dl.google.com",
"maven.google.com",
"plugins.gradle.org",
"jitpack.io",
"jcenter.bintray.com",
"maven.fabric.io",
"developer.huawei.com",
"storage.googleapis.com",
]
def shouldRedirect(String url) {
return REDIRECT_HOSTS.any { url.contains(it) }
}
def interceptRepos(repos) {
repos.whenObjectAdded {
if (it instanceof MavenArtifactRepository) {
def original = it.url.toString()
if (shouldRedirect(original)) {
logger.info("[Mirror] Redirecting: ${original} → ${MIRROR}")
it.url = MIRROR
}
}
}
}
gradle.beforeSettings { settings ->
settings.pluginManagement {
interceptRepos(repositories)
repositories {
maven { url MIRROR }
}
}
}
gradle.allprojects {
buildscript {
interceptRepos(repositories)
repositories {
clear()
maven { url MIRROR }
}
}
interceptRepos(repositories)
}
فقط یک آدرس برای همه repoها کافی است. نیازی به تعریف جداگانه Google/Central/Plugin Portal نیست.
pluginManagement {
repositories {
maven(url = "https://maven.tarazerp.ir")
}
}
pluginManagement {
repositories {
maven { url "https://maven.tarazerp.ir" }
}
}
distributionUrl=https://flutter.tarazerp.ir/gradle/distributions/gradle-8.7-bin.zip
آرتیفکتهای Flutter از Google Cloud Storage دریافت میشوند.
/flutter_infra_release/.../download.flutter.io/.../artifacts/.../dart-sdk/.../flutter_web_sdk/.../pkg/...یک endpoint برای همه Maven repositories.
/maven/.../maven/google/.../maven/central/.../maven/gradle-plugins/.../gradle/distributions/...