一、問題發(fā)生背景
android studio是Arctic Fox版本,gradle 插件版本是7.2,JDK11。創(chuàng)建groovy model 實現(xiàn) javassist 時,groovy model的 build.gradle 如下:
apply plugin: 'groovy'
apply plugin: 'maven'
repositories {
mavenCentral()
}
uploadArchives{
// 打包成一個jar 引用jar 生成這個三個信息
repositories.mavenDeployer {
pom.groupId = 'com.javassist'
pom.artifactId = 'modify'
pom.version = '1.0.0'
repository(url: uri('../repo'))
}
}
dependencies {
//gradle sdk
compile gradleApi()
//groovy sdk
compile localGroovy()
compile 'org.javassist:javassist:3.20.0-GA'
}
結(jié)果報錯:
Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id 'maven' not found.
二、分析解決
Gradle 7版本將maven插件移除了,用maven publish插件替代。
解決如下:
plugins {
id 'groovy'
id 'maven-publish'
}
publishing {
publications {
publish2Local(MavenPublication) {
groupId = 'com.javassist'
artifactId = 'modify'
version = '1.0.0'
from components.java
}
}
repositories {
maven {
url = "$buildDir/repo"
}
}
}
dependencies {
//gradle sdk
implementation gradleApi()
//groovy sdk
implementation localGroovy()
implementation 'org.javassist:javassist:3.20.0-GA'
}
如果報 ‘Gradle Libs’ was added by unknown code:
Build was configured to prefer settings repositories over project repositories
but repository ‘Gradle Libs’ was added by unknown code
解決方法
問題的原因就是Gradle希望開發(fā)者將所有倉庫配置都在這里設置,而不是根據(jù)每個項目自己去導入
settings.gradle中,修改或去除repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
dependencyResolutionManagement {
// repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)
repositories {
google()
mavenCentral()
}
}