IDEA引入Gradle工程小记
1.首先IDEA要在该工程Settings中配置本地安装的Gradle,配好其home目录,注意目录到根目录即可,不要到bin一级,否则提示错误,无法使用:
2.配置好后会自动侦测Gradle项目,点击右下角自动引入依赖
3.有些依赖无法下载,右上角有提示选项,try again重试,也可点击查看详细日志,基本上是网络不通,因为缓存(cached xxx.jar)不到国外库的相应jar包导致:
4.Gradle默认配置在C盘下该用户下的.gradle目录,默认jar存放地址为C:\Users\(用户名)\.gradle\caches\modules-2\files-2.1,可参考博文https://blog.csdn.net/chwshuang/article/details/52261940手动下载添加到Gradle已生成的对应目录。
5.Gradle入门博客:https://www.jianshu.com/p/001abe1d8e95
6.Gradle仓库配置:.gradle文件夹下添加脚本:
allprojects{ repositories { def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/' all { ArtifactRepository repo -> if(repo instanceof MavenArtifactRepository){ def url = repo.url.toString() if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) { project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL." remove repo } } } maven { url REPOSITORY_URL } } }
命名为init.gradle,此为全局远程仓库配置。
每个项目的build.gradle文件中,可配置多个maven仓库:
repositories { mavenCentral() maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'https://repo.spring.io/libs-snapshot' } }
这样可以分别从这几个仓库尝试下载jar包,当然
io.spring.gradle:spring-build-conventions:0.0.15.RELEASE
这个包无论如何也找不到!
本地仓库可配置环境变量GRADLE_USER_HOME,指定一个本地库位置,下载的jar包会存储在这里.
参考博文:https://blog.csdn.net/x_iya/article/details/75040806
https://www.cnblogs.com/dwb91/p/6523541.html
这里支持阿里仓库按artifactId,groupId查询:http://maven.aliyun.com/mvn/search
巨坑提示
IDEA默认全局Gradle配置中,有一个巨坑选项:Offline Work--也就是离线工作!!这样是无法引入任何在线依赖的!!只能引入Gradle默认库中已有Jar,非常之坑爹!需要把这个默认勾选掉:
这样Gradle才会默认下载依赖。注意IDEA另外坑比的一点是Gradle支持没有像Maven支持一样可以手动reimport,只能靠它的自动引入,或勾选掉上面图片中的Use auto-import选项后右下角自动出现的手动引入/自动引入选项!
关于IDEA引入项目
1.IDEA 2017.2版的另外一个头痛Bug就是大多数时候引入Maven依赖会无限期进度条等待,无法引入任何在线依赖。解决办法只能是关闭所有项目,再重新打开项目,Mavn-reimport
2.IDEA在引入模块化项目时,需要在Project Structures中调整,每次都是要选中父项目,在父项目下引入子项目模块!
引入正常的模块化项目是在父项目下列出所有子项目模块,而不是与父项目并列!
项目间相互依赖,需要在dependencies中引入项目依赖,也可在出错地方Alt+Enter,自动智能引入。
如果层次不对,需要在关闭所有项目后的小窗口删除这个项目,从头重新引入,Gradle/Maven工程。
3.Dubbo项目,无法引入相关Dubbo/Spring依赖jar,Spring配置文件中的Dubbo Schema命名空间就会报错
4.将模块化工程整体编译防止报错,每个工程所需log4j.properties需要放在自己工程的resources目录下,放在父工程不行! Web工程中引入Web模块Tomcat,重新编译后也需要整个Web模块删除,在工程中删除Artifacts,重新添加Artifacts(引入module时,下面第二个选项),重新添加Web模块Tomcat,在Web模块中添加本工程Artifacts