Gradle:创建一个没有类,只有资源的jar

时间:2013-10-29 15:05:09

标签: java jar gradle build.gradle

我正在尝试使用以下模式创建一组四个罐子(每个罐子都有自己的项目。helpRootDir在所有四个罐子之间共享。如果有人知道一种方法可以完成一个任务这四个,那真是棒极了)

def helpRootDir = 'runtime/datafiles/help/'
project(':schedwinclihelp') {
    def helpDir = 'schedwincli'

    //Include no classes.  This is strictly a resource jar
    sourceSets.main.java {
        exclude 'com/**'
    }

    jar {
        from '${helpRootDir}/${helpDir}'
        include '**/*.*'
    }

}

无论如何,正如你从上面所看到的,我想要jar中没有类,这是有效的。不幸的是,我实际上在jar中获取的是一个MANIFEST.MF文件。 jar定义中的所有文件都没有添加。我想将${helpRootDir}/${helpDir}中的完整文件树添加到jar的根目录中。我该如何做到这一点?

2 个答案:

答案 0 :(得分:1)

想通了我错误地引用了我的变量。

正确的语法是:

def helpRootDir = 'runtime/datafiles/help/'
project(':schedwinclihelp') {
    def helpDir = 'schedwincli'

    //Include no classes.  This is strictly a resource jar
    sourceSets.main {
        java {
            exclude 'com/**'
        }
        resources {
            srcDir  helpRootDir + '/' + helpDir
        }
    }
}

注意srcDir helpRootDir + '/' + helpDir而不是'${helpRootDir}/${helpDir}'。另外,我刚刚帮助dir一个资源目录,让java插件自动完成它。

答案 1 :(得分:1)

以下任务将创建一个名为 resources.jar 的 JAR 文件,其中仅包含主要资源文件(这些文件位于 src/main/resoures 目录下)。

科特林 DSL:

tasks {
    task<Jar>("resourcesJar") {
        from(sourceSets["main"].resources)
        archiveFileName.set("resources.jar")
    }
}

Groovy DSL:

tasks.create("resourcesJar", Jar.class) {
    from sourceSets.main.resources
    archiveFileName = "resources.jar"
}