Java 格拉德尔没有';如果存在jar,则不构建源代码

Java 格拉德尔没有';如果存在jar,则不构建源代码,java,jar,gradle,Java,Jar,Gradle,我在Android Studio项目中使用了一个jar,secretshare-1.4.1.jar。现在,我还希望能够看到这个项目的源代码,因此我将secretshare-1.4.1-sources.jar添加到libs文件夹中,而不将其添加到项目的依赖项中。这允许我浏览库中的类及其源代码 但是,问题是如果我这样做,我就无法构建项目。问题似乎是这两个JAR具有相同的类,因此gradle给出了一个重复的文件错误。但是sources jar甚至不在build.gradle文件中 下面是我正在尝试运行

我在Android Studio项目中使用了一个jar,
secretshare-1.4.1.jar
。现在,我还希望能够看到这个项目的源代码,因此我将
secretshare-1.4.1-sources.jar
添加到libs文件夹中,而不将其添加到项目的依赖项中。这允许我浏览库中的类及其源代码

但是,问题是如果我这样做,我就无法构建项目。问题似乎是这两个JAR具有相同的类,因此gradle给出了一个重复的文件错误。但是sources jar甚至不在
build.gradle
文件中

下面是我正在尝试运行的示例代码:

import com.tiemens.secretshare.main.cli.MainSplit;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
...

public static void main(String[] args){
        String s = "test message";
        String k = "1";
        String n = "2";
        String[] splitArgs = {"-n", n, "-k", k, "-sS", s};
        MainSplit.SplitInput splitInput = MainSplit.SplitInput.parse(splitArgs);
        MainSplit.SplitOutput splitOutput = splitInput.output();

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PrintStream ps = new PrintStream(baos);
        splitOutput.print(ps);
        String content = baos.toString(); // e.g. ISO-8859-1
        System.out.println(content);
    }
}
这是build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.sakhuja.ayush.secretsafe"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile files('libs/activation.jar')
    compile files('libs/additionnal.jar')
    compile files('libs/mail.jar')
    compile files('libs/secretshare-1.4.1.jar')
}
我得到的错误消息是:

Error:Gradle: duplicate files during packaging of APK D:\z\Academics\Code\SecretSafe\app\build\outputs\apk\app-debug-unaligned.apk
Error:Gradle: Execution failed for task ':app:packageDebug'.
> Duplicate files copied in APK html/SecretShareApplet.html
    File 1: D:\z\Academics\Code\SecretSafe\app\libs\secretshare-1.4.1.jar
    File 2: D:\z\Academics\Code\SecretSafe\app\libs\secretshare-1.4.1.jar
如果我从libs文件夹中删除
secretshare-1.4.1-sources.jar
,错误就会消失。但我真的想保留它,因为我想引用库的源代码。建议?

您的建议

    compile fileTree(include: ['*.jar'], dir: 'libs')
将获取libs目录中的每个jar,包括secretshare-1.4.1-sources.jar。这也使得配置块中的4个结束行变得不必要。从文件树中专门排除secretshare-1.4.1-sources.jar:

    fileTree(include: ['*.jar'], dir: 'libs', excludes: ['secretshare-1.4.1-sources.jar'])
我还建议从配置块中删除最后4行,但这只是一个建议,并不是严格意义上的问题