6

我正在尝试使用以下模式创建一组四个罐子(每个罐子都有自己的项目。 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 中没有类,这是可行的。不幸的是,我实际上得到的只是一个 MANIFEST.MF 文件。jar 定义中的所有文件都没有被添加。我希望将完整的文件树${helpRootDir}/${helpDir}添加到 jar 的根目录中。我该如何做到这一点?

4

2 回答 2

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}'. 另外,我只是将帮助目录设为资源目录,然后让 java 插件自动完成它的工作。

于 2013-10-29T15:37:56.600 回答
1

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

Kotlin 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"
}
于 2021-07-28T12:52:06.863 回答