我在运行 android 时对本机项目做出了反应,此错误显示
构建文件 'C:\dev\icnet_final\android\app\build.gradle' 行:213
评估项目“:app”时出现问题。
无法获取 org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer 类型的配置容器的未知属性“compile”。
摘要:
我有一个依赖于JAR文件的AAR文件,当我构建AAR项目时,它不包含JAR代码.
细节:
我有一个Java SDK库项目,其中包含我们用于Java Web项目的代码,这样,该库是使用Gradle并驻留在内部nexus服务器(作为JAR)中创建的.
目标是通过多个Android应用程序可以使用的AAR库提供此JAR库的"Android配置"版本,并最大限度地减少实现它的工作量(和样板代码).此AAR文件也会上载到nexus服务器以供Android应用程序项目使用.
我的AAR项目包括我的Java SDK库(JAR)的gradle依赖项,但是在构建时,AAR不包含任何类.
码:
这是Java SDK项目的gradle文件:
apply plugin: 'java'
//noinspection GroovyUnusedAssignment
sourceCompatibility = 1.7
version = '1.1.1'
repositories {
mavenCentral()
}
jar {
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile 'org.apache.directory.studio:org.apache.commons.io:2.4'
compile 'org.springframework:spring-web:3.1.1.RELEASE'
compile 'com.google.code.gson:gson:2.3'
}
Run Code Online (Sandbox Code Playgroud)
这是我的AAR项目的gradle文件,请注意我从中删除了Maven存储库声明到我的nexus服务器.我想这个问题应该没关系.
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "2.2.2"
} …Run Code Online (Sandbox Code Playgroud) 我正在研究具有内部和外部依赖关系的多个Gradle项目,到目前为止,我很高兴感谢Gradle的依赖关系管理,我可以修改库项目而不会影响使用该库的每个应用程序.
当我需要修改库项目并使用使用它的应用程序项目对其进行测试时,我需要执行以下操作,
build.properties以引用新版本的库项目所以它现在变得非常简洁.我可以配置IntelliJ IDEA吗?
pom.xml.遗憾的是,IntelliJ的JetGradle插件似乎并不了解Gradle子项目.
build.properties依赖项是我的子项目时,从本地快照读取依赖项,否则从Gradle存储库下载它们谢谢.
我尝试运行此命令以列出 firebase-messaging 库的所有依赖项:
gradlew :app:dependencyInsight --configuration compile --dependency firebase-messaging
Run Code Online (Sandbox Code Playgroud)
但它返回给我:
:app:dependencyInsight 在配置“:app:compile”中找不到与给定输入匹配的依赖项
BUILD SUCCESSFUL in 0s 1 个可操作的任务:1 个执行
这是我的 build.gradle 文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.example.test.myapplication"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:27.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation 'com.google.firebase:firebase-messaging:12.0.1'
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
我目前jar的build.gradle情况如下:
jar {
manifest {
attributes "Main-Class": "hoge.Main"
}
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
Run Code Online (Sandbox Code Playgroud)
并且运作良好。
但是,我收到了来自 Gradle 的消息(可能从 6 岁以上开始?)
这是实际的消息:
The compile configuration has been deprecated for dependency declaration. This will fail with an error in Gradle 7.0. Please use the implementation configuration instead.
Run Code Online (Sandbox Code Playgroud)
该部分configurations.compile已弃用。
我怎样才能更新它?
如果我变了
jar {
manifest {
attributes "Main-Class": "hoge.Main"
}
from configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) }
}
Run Code Online (Sandbox Code Playgroud)
摇篮 说 > …
这个问题关系到这一个.
我得到了这个Gradle任务:
task fatJar(type: Jar) {
manifest {
attributes 'Implementation-Title': 'rpi-sense-hat-lib',
'Implementation-Version': version,
'Main-Class': 'io.github.lunarwatcher.pi.sensehat.Tests'
}
baseName = project.name
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
with jar
}
Run Code Online (Sandbox Code Playgroud)
并且只有一个依赖项,将测试依赖项放在一边:
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
testImplementation group: 'junit', name: 'junit', version: '4.12'
}
Run Code Online (Sandbox Code Playgroud)
从IDE运行正常.但是,当我部署到我的Raspberry Pi(或gradlew fatJar在本地使用jar 结果)时,我得到以下异常:
$ java -jar java-sense-hat-1.0a.jar
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
at io.github.lunarwatcher.pi.sensehat.UtilsKt.getSenseHat(Utils.kt:18)
at io.github.lunarwatcher.pi.sensehat.SenseHat.<init>(SenseHat.java:12)
at io.github.lunarwatcher.pi.sensehat.Tests.main(Tests.java:9)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) …Run Code Online (Sandbox Code Playgroud) gradle ×6
android ×3
java ×3
build.gradle ×2
jar ×2
aar ×1
dependencies ×1
gradlew ×1
kotlin ×1
react-native ×1