我正在尝试为我们的 flutter 应用程序设置一个 ci 用例,要求是使用 flutter 设置原始图像,并尝试像平常 ci 一样在图像中构建项目。 该映像无法访问互联网,并且必须从本地存储库获取依赖项。 我添加了 PUB_HOSTED_URL 环境变量,其中本地存储库的“https://localUrl”作为值,这使我能够从本地存储库获取 pub 包。
然而,android 依赖关系很棘手,这就是我陷入困境的地方!我尝试更改
distributionUrl
文件中的 gradle android/gradle/wrapper/gradle-wrapper.properties
解决了下载 gradle 的问题。
我还尝试在 android/settings.gradle
和 android/build.gradle
文件中设置自定义存储库,如下所示:
settings.gradle:
pluginManagement {
...
repositories {
mavenCentral {url 'https://localRepo'}
maven { url 'https://localRepo' }
google {url 'https://localRepo'}
gradlePluginPortal{url 'https://localRepo'}
jcenter{url 'https://localRepo'}
}
}
build.gradle:
allprojects {
repositories {
mavenCentral {url 'https://localRepo'}
maven { url 'https://localRepo' }
google {url 'https://localRepo'}
gradlePluginPortal{url 'https://localRepo'}
jcenter{url 'https://localRepo'}
}
}
由于毫无进展,我按照 github_issue 中的说明进行操作,因为我的 flutter 版本是 3.24.3
flutter.gradle
没有 buildscript
以及相应的 google()
和 maven()
存储库,我认为它可能已迁移到 flutter.groovy
因为它被用在flutter.gradle
中并在第108行找到buildscript
,也将google()
的maven()
和flutter.groovy
更改为
maven { url 'https://localRepo' }
google {url 'https://localRepo'}
这是我面临的错误,这是因为我的图像无法访问互联网,应该从 localRepository 获取依赖项。
* What went wrong:
Execution failed for task ':gradle:compileGroovy'.
> Could not resolve all files for configuration ':gradle:compileClasspath'.
> Could not find com.android.tools.build:gradle:7.3.0.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.3.0/gradle-7.3.0.pom
- https://repo.maven.apache.org/maven2/com/android/tools/build/gradle/7.3.0/gradle-7.3.0.pom
Required by:
project :gradle
flutter.gradle 位于: 扑/包/flutter_tools/gradle 或者 $FLUTTER_HOME/packages/flutter_tools/gradle/flutter.gradle
flutter.groovy 位于: 扑/包/flutter_tools/gradle/src/main/groovy/flutter.groovy 或者 $FLUTTER_HOME/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
ps:由于图像尺寸较大,我宁愿不构建已包含 gradle 依赖项的图像。
提前谢谢您。
jcenter()
是无意义的,同样url 'https://localRepo'
是无意义的。
只需转到 https://localRepo 并尝试在浏览器中列出它...
假设包裹在那里,mavenLocal()
就是您所需要的。