我想要生成一个具有多个模块和依赖项的单个Jar。我安装了FatJar Plugin,但得到了以下错误:

我的代码:

尝试shadowJar
错误:(61,0)无法为项目':SDKFramework‘的参数build_eqgfg4x39smehqcteaccdy4k6$_run_closure4@780b32c6找到org.gradle.api.Project类型的方法shadowJar()。打开文件
My build.gradle (模块)
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'com.android.library'
apply plugin: 'groovyx.grooid.groovy-android'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
versionCode 1
versionName "0.1.1"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.10'
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
}
}
dependencies {
compile 'com.android.support:appcompat-v7:22.2.0'
compile project(':framework2')
compile 'com.google.code.gson:gson:2.6.1'
compile 'junit:junit:4.12'
}
shadowJar {
}发布于 2016-06-14 14:18:41
我找到了解决方案:
task createJar(type: Jar) {
from {
List<File> allFiles = new ArrayList<>();
configurations.compile.collect {
for (File f : zipTree(it).getFiles()) {
if (f.getName().equals("classes.jar")) {
allFiles.addAll(zipTree(f).getAt("asFileTrees").get(0).getDir())
}
}
}
allFiles.add(new File('build/intermediates/classes/release'))
allFiles // To return the result inside a lambda
}
archiveName('MySDK.jar')
}--这个代码生成一个包含所有类的jar。
发布于 2016-06-14 17:40:02
非常简单的解决方案是使用影子插件。
使用插件非常简单:
插件{ id "com.github.johnrengelman.shadow“版本"1.2.3” }
应用插件:'java‘
或
应用插件:“groovy”
这个插件还使您能够排除依赖项、重定向(重命名)包的名称等等。
发布于 2016-06-14 10:01:12
应该在build.gradle中添加以下行
apply plugin: 'java'因为在默认情况下,gradle没有"Jar“任务。你可以在这里读到,https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html
如果您使用android,那么在这里添加:
apply plugin: 'android'或
apply plugin: 'com.android.library'https://stackoverflow.com/questions/37807562
复制相似问题