我已经使用最新的gradle和gradle插件将Android Studio从4.1.3升级到4.2。现在,由于jcenter是生命周期的结束,不推荐在构建脚本中使用jcenter()的引用:
建议“迁移”到mavenCentral()。我有各种似乎不在mavenCentral()上的依赖项,因为gradle找不到它们,例如:
我谷歌了这个工件(在这种情况下是“物质搜索视图”),并在搜索平台“MVNrepository”上找到了它:
因此,以下是我尝试(都不成功)在我的构建脚本中放入一个引用,让gradle找到这个工件:
>
我在我的项目级别build.gradle文件中添加了对mvnrepository的引用(考虑到mvnrepository是一种搜索机制,我没想到会成功),突出显示在图片中的红框中,即:
maven{urlhttps://mvnrepository.com/artifact/}
我添加了一个对底部蓝色框中标识的存储库的引用,mvnrepository表示工件所在的位置,即。
maven{urlhttps://repo.spring.io/plugins-release/}
这产生了一个稍微不同的错误:
Could not HEAD 'https://repo.spring.io/plugins-release/com/miguelcatalan/materialsearchview/1.4.0/materialsearchview-1.4.0.pom'. Received status code 401 from server: Unauthorized
我找到了这个依赖项的. aar文件,将其添加到我的libs目录,并更新了我的应用模块级别build.gradle文件,如下所示:
实现文件树(包括:['.jar','.aar'],目录:“libs”)
在这一点上,我做了一个“无效缓存并重启”,认为AS需要在gradle识别它之前索引新添加的. aar文件。没有喜悦。
我特别将. aar文件添加到libs目录,然后在应用模块中添加了对它的引用build.gradle:
实现(名称:“materialsearchview-1.4.0”,分机:“aar”)
然后又执行了另一次无效缓存/重新启动。没有快乐。
所以我想我有三个问题:
>
还有什么其他方法可以找到gradle可以寻址的其他存储库,以查看该项是否存在?
为什么要使用。当我正在做的时候,在libs目录中的aar文件失败了吗?为什么Gradle在那里看不到?
谢谢!
对于那些想尝试更简单的方法的人,只需点击这里的Android Studio Archive并下载Android Studio v4。1(2020年10月12日)并安装。工作正常,我自己检查过了。
在与Commonware的MarkMurphy讨论这一点之后,我意识到我对项目级构建的存储库部分之间的关系存在误解。gradle文件,以及模块级构建的实现语句。格雷德尔档案。
多亏了马克,这是一个很好的思考方式:
项目级别build.gradle,即:
repositories {
google()
mavenCentral()
maven { url 'https://maven.preemptive.com/' }
maven { url 'https://jitpack.io' }
//jcenter()
}
将这些视为“Gradle,查看这些存储库以协调所有‘实现’语句。”
然后在模块级构建中。gradle我有这个:
implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
把这想象成“哦,是的,也抓住所有这些东西,即使我没有提到它们是特定的依赖关系”。
我的错误是,我认为我可以有一个。libs目录中的aar文件,该文件还具有相应的“implementation”语句。你不能。
我的错误#2是我有一个引用了。maven中的aar文件(这很好,因为maven在MyRepositories块中),它本身引用了一个。aar文件,它不在maven中,而只在jcenter中(这不是因为我刚刚从repositories块中删除了jcenter)。当我在存储库块中删除对jcenter的引用时,该依赖关系(“可传递依赖关系”)未协调,构建失败。
因此吸取的教训:
“实现”语句中引用的任何资源以及它所依赖的POM中的任何资源都必须位于您在repositories块中定义的存储库中。
如果任何依赖项都在jcenter中,因为我已经摆脱了jcenter,那么我必须:
如何识别您所问的所有依赖关系?好吧,你可以慢慢地做(就像我一开始做的那样),并不断地查找/添加它们,直到构建不再中断为止。或者你可以更聪明一点,让Gradle告诉你如果你问它会做什么(见这里的文档)。
最后,不要忘记,仅仅确保引用的内容是不够的。aar文件在libs中。换句话说,Gradle的工作方式不同:“我将首先查看存储库,以满足您的实现依赖项和它们引用的任何依赖项,如果它们不存在,那么我将在您让我查看fileTree语句的地方查看所有.jar和.aar文件”。相反,请注意,“实现”语句中的项引用的任何依赖项也需要能够在存储库中找到。如果不能,那么您唯一的选择就是使用该依赖关系图,确定所有依赖关系,并放置所有依赖关系。将aar文件放入/libs中,并从“实现”语句中删除任何内容。
如果您可以找到另一个存储库,而不是与所有单个存储库混为一谈,那么就容易多了。aar文件!
> 显然停止了服务。给出以下结果: 确保关闭Microsoft管理控制台(), 确保关闭事件查看器,
有一个使用了fabricjs(版本:5.3.0)写的弹框组件,大致为: 正常情况下应该是canvas-container下有一个lower-canvas和一个upper-canvas, 但是现在总是出现生成了多层嵌套的canvas,外层嵌套的canvas会丢失lower-canvas,导致数据正确但是绘制总是出问题,无法选中绘制图形或者总是只显示第一次的数据,感觉canvas第一次初始化后,之后都
试图构建一个简单的Vite项目,其中包含tailwindcss,但出现以下错误,有什么想法吗?
Xpages应用程序已经有几年的历史了,但现在,对现有Xpage的任何更新都会显示一条浏览器消息: HTTP Web服务器:找不到项目异常 xpages_exec日志显示: com . IBM . xsp . page . pagenotfoundexception:无法创建页面/Cards.xsp,因为类xsp。找不到卡片。请检查你的拼写。 即使只是简单地重新保存工作Xpage,也会发生这种情况
接手别人的前端代码,发现一个奇怪的问题,用的elementUI组件,排序后点击删除按钮会随机删除,但是打印传入的下标发现又是正确的,只剩一个元素时可以正常删除,可能有哪些原因? 删除函数 排序函数 删除按钮 尝试了防止事件冒泡,重写排序函数,去除删除函数的异步修饰符,对this.addForm.dtlGoods.splice(rowIndex, 1) 加await,但是都不起作用
我需要删除或从Laravel中生成的URL;通常路径是,它应该是类似于 .htaccess app/config/app。php 我怎样才能改变这一点?