在gradle的jar命令中使用include和exclude并不包括所有需要的类

时间:2018-10-15 13:35:59

标签: java build.gradle

我需要从项目中的Java类的子集创建一个jar。 我有3个任务:(复制,编译,Jar) 复制和编译任务可以正常工作。 它们在下面供参考:     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/*')时,它包含 common 目录文件,但不包含 common 目录下的子目录 local 。 它根本不包含 javaserver 目录。

如何在jar命令中使用includeexclude

1 个答案:

答案 0 :(得分:0)

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