首页 > 解决方案 > 在 gradle 的 jar 命令中使用 include 和 exclude 并不包括所有需要的类

问题描述

我需要从项目中的 Java 类子集创建一个 jar。我有 3 个任务:(复制、编译、罐子)复制和编译任务工作正常。以下供参考: 1. 将文件复制到编译jar 所需的目录。此目录中需要的其他文件在编译中需要但未包含在 jar 文件中。

 task copyCoreSharedFiles(type: Copy) {
        includeEmptyDirs = false
        from ('src/java/com/')
    (List of includes and excludes) 
        into  rootProject.rootDir.getAbsolutePath() + "/target" +"/coreshared"
        println 'Copied core-shared files into directory'   
    }
2. Compile the java files and stored to another directory


 task compileCoreShareJar(type: JavaCompile) {
        source = file('target/coreshared')
        destinationDir = file('target/buildtmp/core')
        classpath = configurations.compile
        println 'Compiled core-shared files into directory' 
    }

我无法震动所有的类文件。下面的任务。

task jarCoreShareClassFiles(type: Jar) {
    includeEmptyDirs = false
    archiveName = "core-shared-SNAPSHOT.jar"
    destinationDir = file("$rootDir/target/lib/")
    from file('target/buildtmp/core')
    include('**/com/common/*')
    include('**/com/javaserver/*')
    exclude('**/com/javaserver/dock/transaction/PrintTransaction.class')

    println 'Jar core-shared files into directory'
}

我需要包含和排除特定的目录和文件。当我使用include('**/com/common/*')它时,它包括公共目录文件,但不包括公共目录下的本地子目录。它根本不包括javaserver目录。

如何在 jar 命令中使用include和?exclude

标签: javabuild.gradle

解决方案


*模式与子目录不匹配。要递归到子目录,您可以使用**.


推荐阅读